站外题求助
  • 板块灌水区
  • 楼主Tania2013
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/9/20 00:19
  • 上次更新2024/9/20 13:24:50
查看原帖
站外题求助
1281317
Tania2013楼主2024/9/20 00:19

题目

题目描述 一个圆上有三个动点,都是顺时针绕着圆在运行。第一个点绕行一圈时间为 t1秒,第二个点绕行一圈时间为t2秒,第三个点绕行一圈时间为t3秒。t=0时三个点在同一个位置,问下一次三个点到同一个位置需要多少秒。用既约分数表示。

输入 第一行一个整数t1,第二行一个整数t2,第三行一个整数t3。

输出 一个分数,表示下一次三个点在同一个位置经过的秒数。

样例输入输出

样例输入 2 3 4 样例输出 12/1

样例说明 12秒后,三个动点分别绕行了6圈、4圈和3圈,在此期间三个动点不会在同一个位置。注意,即使答案是整数,也需要用分数形式表示。

样例输入 15 21 35 样例输出 105/2

样例输入 40 52 130 样例输出 520/3

数据范围 对于 12% 的数据,t3<=12。

另有 12% 的数据,t1=1。

对于 100% 的数据,1<=t1<t2<t3<=10000

我的代码

#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);
}

求大佬帮忙看看是哪里有错

2024/9/20 00:19
加载中...