首页 > 代码库 > 杭电ACM 1713 相遇周期
杭电ACM 1713 相遇周期
相遇周期
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3382 Accepted Submission(s): 1734
Problem Description
2007年3月26日,在中俄两国元首的见证下,中国国家航天局局长孙来燕与俄罗斯联邦航天局局长别尔米诺夫共同签署了《中国国家航天局和俄罗斯联邦航天局关于联合探测火星-火卫一合作的协议》,确定中俄双方将于2009年联合对火星及其卫星“火卫一”进行探测。
而卫星是进行这些探测的重要工具,我们的问题是已知两颗卫星的运行周期,求它们的相遇周期。
而卫星是进行这些探测的重要工具,我们的问题是已知两颗卫星的运行周期,求它们的相遇周期。
Input
输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包含两组正整数,用空格隔开。每组包含两个正整数,表示转n圈需要的天数(26501/6335,表示转26501圈要6335天),用‘/‘隔开。
Output
对于每组测试数据, 输出它们的相遇周期,如果相遇周期是整数则用整数表示,否则用最简分数表示。
Sample Input
2
26501/6335 18468/42
29359/11479 15725/19170
题目的意思凝练一下,就是求两个分数的最小公倍数。
思路,你先写两个简单的分数,比如我写了 1/2和3/2 那么显而易见最小公倍数就是3/2 然后根据数学规律,可以得出,两个分数的最小公倍数应该是 分子=两个分子的最小公倍数 分母=两个分子的最大公约数(前提条件是分子分母都是最简的) 求最简 就是分子分母同时除以 他们的gcd
还有个要注意的地方就是,在用gcd函数返回的时候,要注意一下,找个变量存一下,不然直接除会报错。基本就是这样。
附上代码:
#include <iostream> #include<math.h> #include <iomanip> #include<cstdio> #include<string> #include<map> #include<vector> #include<list> #include<algorithm> #include<stdlib.h> #include<iterator> #include<sstream> #include<string.h> #include<stdio.h> using namespace std; long long gcd(long long a,long long b) { long long big=a; long long smal=b; long long ck; if(big<smal) { ck=a; a=b; b=a; } long long temp; while(smal>0) { temp=big%smal; big=smal; smal=temp; } return big; } long long gys(long long a,long long b) { long long kk; long long ak=a; long long bk=b; kk=ak*bk/gcd(ak,bk); return kk; } int main() { int n; cin>>n; while(n--) { //首先看到这么大的数据 就想到要不要用long long long long m,n,x,y; long long fenzi,fenmu; char aa,bb; cin>>m>>aa>>n>>x>>bb>>y; long long aa1=gcd(m,n);//然后就是函数的返回值最好 m=m/aa1; //找个变量存一下 我不知道 n=n/aa1; //为什么不用变量存就会报错 long long aa2=gcd(x,y); x=x/aa2; y=y/aa2; fenzi=gys(m,x); fenmu=gcd(n,y); //long long a33=gcd(fenzi,fenmu); 我注释掉这几行 //fenzi=fenzi/a33; 还是能过 //fenmu=fenmu/a33; if(fenzi%fenmu==0) { cout<<fenzi<<endl; } else { cout<<fenzi<<"/"<<fenmu<<endl; } } return 0; }
杭电ACM 1713 相遇周期
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。