Code Forces 592 C. The Big Race(数论)
来源:互联网 发布:vb与vs的区别 编辑:程序博客网 时间:2024/04/30 15:57
Description
给出三个整数t,w,b,问在1~t中有多少个数num满足num%w=num%b
Input
三个整数t,w,b(1 ≤ t, w, b ≤ 5*1e18)
Output
输出1~t中满足num%w=num%b的num个数占的比例,以最简分数形式输出
Sample Input
10 3 2
Sample Output
3/10
Solution
当num< min(w,b)时显然num%w=num=num%b,此时有min(w,b)-1个数满足条件,令lcm=lac(w,b),gcd=gcd(w,b),那么t=(t/lcm)*lcm+t%lcm,对于余数部分t%lcm,ans+=min( min(w,b)-1,t%lcm ),对于每一个lcm段,由于lcm%w=0=lcm%b,故可以将一个lcm段中的num看作1~lcm,1~min(w,b)-1中有min(w,b)-1个数符合条件,min(w,b)~max(w,b)之间没有符合条件的数字,所以只需分析max(w,b)+1~lcm之间有多少符合条件的数字,设num=m*w+x=n*b+x,w=c*gcd,b=d*gcd,故有mc=nd,其中m<=d,n<=c,显然c,d互素,那么m%d=d%m=n%c=c%n=0,所以有m=d,n=c,因此满足条件的num只有一个,即lcm,那么每一个lcm段中就有min(w,b)个满足条件的数字,综合起来得到ans=(t/lcm)*min(w,b)+min(min(w,b)-1,t%lcm)
注意由于w和b过大,在计算时不知道lcm多大不能直接用t/lcm,而是先通过判断t/w*gcd/b是否为0来判断lcm是否超过t,如果超过就直接令ans=min(min(w,b)-1,t),否则再用上面的公式(此时t/lcm才有意义,因为lcm
#include<stdio.h>#define min(x,y) ((x)<(y)?(x):(y))typedef long long ll;ll gcd(ll a,ll b){ if(a<b) return gcd(b,a); if(b) return gcd(b,a%b); return a;}int main(){ ll t,w,b,lcm,ans,temp; while(~scanf("%I64d%I64d%I64d",&t,&w,&b)) { lcm=w/gcd(w,b)*b; if(t/w*gcd(w,b)/b) ans=(t/lcm)*min(w,b)+min((min(w,b)-1),(t%lcm)); else ans=min((min(w,b)-1),t); temp=gcd(ans,t); printf("%I64d/%I64d\n",ans/temp,t/temp); } return 0;}
- Code Forces 592 C. The Big Race(数论)
- Codeforces 592C The Big Race 【GCD && LCM】
- Codeforces Round #328 (Div. 2) 592 C. The Big Race
- Codeforces 592C The Big Race【数学啊】
- cf C. The Big Race (简单模拟)
- codeforces #328 C. The Big Race
- Code Forces 558 C. Amr and Chemistry(数论+位运算)
- Code Forces 585 C. Alice, Bob, Oranges and Apples(数论)
- Codeforces Round #328 (Div. 2)C. The Big Race(数学gcd && lcm)
- Codeforces Round #328 (Div. 2) C. The Big Race
- Codeforces Round #328 (Div. 2)C. The Big Race
- Codeforces Round #328 (Div. 2)C. The Big Race
- Codeforces Round #328 (Div. 2) C. The Big Race (math)
- Codeforces Round #328 (Div. 2)C. The Big Race
- Code Forces 535 B. Tavas and SaDDas(数论)
- Code Forces 582 A. GCD Table(数论)
- Code Forces 584 D. Dima and Lisa(数论)
- Code Forces 588 B. Duff in Love(数论)
- Junit4学习笔记
- 英雄联盟之策略很重要
- java 读取properties文件 ---封装组件
- Myeclipse下的hibernate配置
- Java多态的理解
- Code Forces 592 C. The Big Race(数论)
- Codevs_P2185 最长公共上升子序列(LCIS)
- 第25篇 jQuer快速学习(上)---选择器和DOM操作
- 基于CLGeocoder - 反地理编码
- 哔哩哔哩视频解析
- DevExpress.XtraTreeList.TreeList + Winform + Access2013 使用实例(一)
- 黑马程序员——Foundation框架——NSMutableArray常用方法
- Java程序员的现代RPC指南
- 客户端界面信息的提供方法、系统和客户端界面生成装置