Codeforces Round #328 (Div. 2)C. The Big Race(数学gcd && lcm)

来源:互联网 发布:mysql not exists 用法 编辑:程序博客网 时间:2024/05/12 15:24

题目连接
题意:比赛时 ,居然理解错题意= =,以为两个人的速度是一样的,然后有个人的只会有一步是w米,另一个人只有一步是b米。。。。
就是一个人每一步是w,一个人每一步是b,终点后是深渊,然后长度是在1–t随机选择一个d作为赛道长度,问不能区分二人胜负的可能。
思路:就是求d%w==d%b = =

#include<bits/stdc++.h>using namespace std;#define LL long long#define pb push_back#define P pair<int,int>#define cl(a,b) memset(a,b,sizeof(a))const int maxn=10005;const int inf=1<<27;int main(){    LL t,w,b;    while(cin>>t>>w>>b){        LL gcd=__gcd(w,b),ans=0;        LL x=min(w-1,b-1);        if(w*1.0/gcd*b>double(t)){            ans=min(x,t);        }        else {            LL lcm=w/gcd*b;            LL num=t/lcm;            ans+=num*(x+1);            ans+=min(t-num*lcm,x);        }        gcd=__gcd(ans,t);        ans/=gcd;t/=gcd;        printf("%lld/%lld\n",ans,t);    }    return 0;}
0 0