CodeForces 592C The Big Race

 2023-09-16 阅读 16 评论 0

摘要:公倍数之间的情况都是一样的,有循环节。 注意min(a,b)>t的情况和最后一段的处理。C++写可能爆longlong,直接Java搞吧...... import java.io.BufferedInputStream; import java.math.BigInteger; import java.util.Scanner;public class Main {public

公倍数之间的情况都是一样的,有循环节。

注意min(a,b)>t的情况和最后一段的处理。C++写可能爆longlong,直接Java搞吧......

import java.io.BufferedInputStream;
import java.math.BigInteger;
import java.util.Scanner;public class Main {public static BigInteger GCD(BigInteger a,BigInteger b){if(b.compareTo(BigInteger.ZERO)==0) return a;return GCD(b,a.remainder(b));}public static BigInteger MIN(BigInteger a,BigInteger b){if(a.compareTo(b)>=0) return b;return a;}public static void main(String[] args) {Scanner sc = new Scanner (new BufferedInputStream(System.in));BigInteger t=sc.nextBigInteger();BigInteger a=sc.nextBigInteger();BigInteger b=sc.nextBigInteger();if(MIN(a,b).compareTo(t)>0){System.out.print("1"+"/"+"1");}else{BigInteger gcd=GCD(a,b);BigInteger lcm=a.multiply(b).divide(gcd);BigInteger k=MIN(a,b).subtract(BigInteger.ONE);BigInteger ans=BigInteger.ZERO;BigInteger tmp=t.divide(lcm);ans=k;if(tmp.compareTo(BigInteger.ZERO)>0){BigInteger u=tmp.subtract(BigInteger.ONE);ans=ans.add(u.multiply(k.add(BigInteger.ONE)));ans=ans.add(BigInteger.ONE);ans=ans.add(MIN(k,t.subtract(lcm.multiply(tmp))));}BigInteger fz=ans;BigInteger fm=t;BigInteger e=GCD(fz,fm);fz=fz.divide(e);fm=fm.divide(e);System.out.print(fz.toString()+"/"+fm.toString());}}
} 

 

转载于:https://www.cnblogs.com/zufezzt/p/5470217.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/69936.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息