HDU 1713 最小公倍数与最大公约数的问题 相遇周期


欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励)

相遇周期

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2465    Accepted Submission(s): 1236

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

Sample Output

81570078/7
5431415

Source

HDU 2007-Spring Programming Contest

题目分析:题目输入c1/t1 c2/t2 ,也就是速度的分数形式,转换成:c1*t2/(t1*t2),  c2*t1/( t1*t2 ); 这时候我们只需要求出分子的最小公倍数k,然后k/( t1*t2 )就是题目求的周期

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
__int64 gcd(__int64 x,__int64 y){
   __int64 tx=x>y?x:y;
   __int64 ty=x<y?x:y;
   if(ty==0)
    return tx;
  else
    gcd(ty,tx%ty);
}
__int64 lcm(__int64 x,__int64 y){
   return x*y/gcd(x,y);
}
int main(){
   int t;
   scanf("%d",&t);
   while(t--){
       __int64 a,b,c,d;
       scanf("%I64d/%I64d %I64d/%I64d",&a,&b,&c,&d);
       a*=d;
       c*=b;
        b*=d;
       __int64 temp=lcm(a,c);
       __int64 temp1=gcd(temp,b);
       temp/=temp1;
       b/=temp1;
       if(b==1)
        printf("%I64d\n",temp);
       else
        printf("%I64d/%I64d\n",temp,b);
   }
   return 0;
}
时间: 2024-10-14 00:58:53

HDU 1713 最小公倍数与最大公约数的问题 相遇周期的相关文章

hdu 1019 最小公倍数

简单题 注意__int64 的使用 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 Problem : 1019 ( Least Common Multiple )     Judge Status : Accepted RunId : 10599776    Language : C++   

hdu 1713 相遇周期 (GCD &amp; LCM)

相遇周期 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1943    Accepted Submission(s): 1000 Problem Description 2007年3月26日,在中俄两国元首的见证下,中国国家航天局局长孙来燕与俄罗斯联邦航天局局长别尔米诺夫共同签署了<中国国家航天局和俄罗斯联邦航天局关于联合探测火星-火

杭电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日,在中俄两国元首的见证下,中国国家航天局局长孙来燕与俄罗斯联邦航天局局长别尔米诺夫共同签署了<中国国家航天局和俄罗斯联邦航天局关于联合探测火星-火卫

hdu acm-step 2.1.3 相遇周期

本题题意:给出两个卫星分数形式的速度,求它们的相遇周期. #include <cstdio> #define ll long long using namespace std; ll gcd(ll a,ll b) { ll r; while(b) { r = a%b; a = b; b = r; } return a; } ll lcm(ll a,ll b) { return a*b/gcd(a,b); } int main() { int T; scanf("%d",&a

(hdu step 2.1.1)最小公倍数(使用最大公约数来辅助求最小公倍数)

题目: 最小公倍数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3609 Accepted Submission(s): 2596   Problem Description 给定两个正整数,计算这两个数的最小公倍数. Input 输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数. Output 对于每个测试用例,给出这

常见算法:C语言求最小公倍数和最大公约数三种算法

最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,当中一个最小的公倍数是他们的最小公倍数,相同地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 求最小公倍数算法: 最小公倍数=两整数的乘积÷最大公约数 求最大公约数算法: (1)辗转相除法 有两整数a和b: ① a%b得余数c ② 若c=0,则b即为两数的最大公约数 ③ 若c≠0,则a=b,b=c,再回去运行① 比如求27和15的最大公约数过程为: 27÷15 余1215÷12余312÷3余0

最小公倍数和最大公约数求解方法

1.利用辗转相除法求出最大公约数 2.得到最大公约数后,两数相乘除以最大公约数即的最小公倍数 function gcb(x,y){ if(y==0) return x; else return gcb(y,x%y); } function minAndMax(x,y){ var max=x>=y?gcb(x,y):gcb(y,x); var min=x*y/max return "最小公倍数:"+min+"\n最大公约数:"+max; } console.lo

C语言求最小公倍数和最大公约数三种算法(经典)

把以前写的一些经验总结汇个总,方便给未来的学弟学妹们做个参考! --------------------------永远爱你们的:Sakura 最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 求最小公倍数算法: 最小公倍数=两整数的乘积÷最大公约数 求最大公约数算法: (1)辗转相除法 有两整数a和b: ① a%b得余数c ② 若c=0,则b即为两

用C++实现最小公倍数和最大公约数

#include<iostream> using namespace std; int main(void) { int x, y, num1, num2, temp; printf("请输入两个正整数:\n"); scanf("%d %d", &num1, &num2); if(num1 < num2)//交换 { num1^=num2; num2^=num1; num1^=num2; } x = num1; y = num2;/