HDU 1713 相遇周期
2013-02-19 13:32
253 查看
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1713
该题目有问题,题目说:26501/6335,表示转26501圈要6335天,但是根据答案来推应该表示的是转6335圈要26501天。
还有个问题,题目描述不明确,题目就说要求相遇周期,但是这道题实际是求回到同一点的周期,与物理里面的相遇周期不同。
解答:
用t1、q1、t2、q2表示,转一圈需要t1/q1,t2/q2天,要求回到同一点的周期,只需要求其的最小公倍数。
分数的最小公倍数:分子=分子的最小公倍数、分母=分母的最大公约数。
注意:求分数的最小公倍数时,这两个分数一定要化简为最简形式,不然会出错。
代码如下:
该题目有问题,题目说:26501/6335,表示转26501圈要6335天,但是根据答案来推应该表示的是转6335圈要26501天。
还有个问题,题目描述不明确,题目就说要求相遇周期,但是这道题实际是求回到同一点的周期,与物理里面的相遇周期不同。
解答:
用t1、q1、t2、q2表示,转一圈需要t1/q1,t2/q2天,要求回到同一点的周期,只需要求其的最小公倍数。
分数的最小公倍数:分子=分子的最小公倍数、分母=分母的最大公约数。
注意:求分数的最小公倍数时,这两个分数一定要化简为最简形式,不然会出错。
代码如下:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <string> #include <algorithm> #include <vector> #include <set> #include <map> #include <queue> #include <stack> using namespace std; /* freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); */ __int64 gcd(__int64 n,__int64 m) { while(m) { __int64 k=n%m; n=m; m=k; } return n; } int main() { int T; __int64 t1,q1,t2,q2,t; scanf("%d",&T); while(T--) { scanf("%I64d/%I64d %I64d/%I64d",&t1,&q1,&t2,&q2);//t天数,q圈数,根据答案推出题目说反了 //求分数的最小公倍数时,这两个分数一定要化简为最简形式 while(t=gcd(t1,q1),t!=1) { t1/=t; q1/=t; } while(t=gcd(t2,q2),t!=1) { t2/=t; q2/=t; } __int64 zi=t1*t2/gcd(t1,t2);//分子 __int64 mu=gcd(q1,q2);//分母 __int64 temp=gcd(zi,mu); zi/=temp; mu/=temp; if(mu==1)//如果分母为1 printf("%I64d\n",zi); else printf("%I64d/%I64d\n",zi,mu); } return 520; }
相关文章推荐
- ACMSTEP 2.1.3 相遇周期 //数论 分数的最小公倍数
- HDU 1713 相遇周期
- HDOJ-1713-相遇周期
- hdu 相遇周期
- ACM刷题之HDU————相遇周期(真·打表(素数筛选))
- 杭电oj(Java版)——1713 相遇周期
- HDU 1713 相遇周期(求两个分数的最小公倍数)
- 相遇周期
- hdu 1713 相遇周期
- HDU 1713 相遇周期
- 2.1.3 相遇周期(lcm、gcd的使用)
- HDU 1713 -相遇周期
- 杭电1713相遇周期
- HDOJ ACMstep 2.1.3 相遇周期
- hdu 1713 相遇周期 比较绕的最大公约,最小公倍问题
- HDOJ---ACMSteps---2.1.3相遇周期
- 关于HDU 1713 相遇周期
- HDU 1713 相遇周期【这也算数学吗?】
- HDU 相遇周期
- HDU1713--相遇周期 HDU(110)