题目链接 我的代码
#include<bits/stdc++.h>
using namespace std;
long long ans1,ans2;
int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int gcd3(int a, int b, int c)
{
return gcd(gcd(a, b), c);
}
int lcm(int a, int b)
{
return (a * b) / gcd(a, b);
}
int lcm3(int a, int b, int c)
{
int lcm_ab = lcm(a, b);
return lcm(lcm_ab, c);
}
int main()
{
//freopen("circle.in","r",stdin);
//freopen("circle.out","w",stdout);
int t1,t2,t3;
cin>>t1>>t2>>t3;
long long a1=t2-t1,a2=t3-t2,a3=t3-t1,b1=t1*t2,b2=t2*t3,b3=t1*t3;
a1=a1/gcd(a1,b1);
b1=a1/gcd(a1,b1);
a2=a2/gcd(a2,b2);
b2=a2/gcd(a2,b2);
a3=a3/gcd(a3,b3);
b3=a3/gcd(a3,b3);
ans1=lcm3(b1,b2,b3);
ans2=gcd3(a1,a2,a3);
ans1=ans1/gcd(ans1,ans2);
ans2=ans2/gcd(ans1,ans2);
cout<<ans1<<"/"<<ans2;
//fclose(stdin);
//fclose(stdout);
}
推理过程 圆1速度是t1分之1,圆2速度是t2分之1,圆3速度是t3分之1.圆1追上圆2的速度(a1=t2-t1)分之(b1=t1t2)然后a1和b1通下分,然后以此类推,最后把所有的分数做最大公倍数,然后通下分,然后输出
我自己推的,感觉推的没啥问题,求大佬帮忙改一下