給你2個分?jǐn)?shù),求他們的和,并要求和為最簡形式。
Input 輸入首先包含一個正整數(shù)T(T< =1000),表示有T組測試數(shù)據(jù),然后是T行數(shù)據(jù),每行包含四個正整數(shù)a,b,c,d(0< a,b,c,d<1000),表示兩個分?jǐn)?shù)a/b 和 c/d。
Output 對于每組測試數(shù)據(jù),輸出兩個整數(shù)e和f,表示a/b + c/d的最簡化結(jié)果是e/f,每組輸出占一行。
Sample Input
21 2 1 34 3 2 3Sample Output
5 62 1實(shí)際上就是考察gcd和lcm,很簡單的一道題。
#include<iostream>using namespace std;int gcd(int a,int b){ return a%b==0?b:gcd(b,a%b);} int main(){ int a,b,c,d,t; cin>>t; while(t--) { cin>>a>>b>>c>>d; int k,sum,cnt,p,q; k=d*b/gcd(b,d); //計(jì)算b跟d的最小公倍數(shù)即通分后的分母 sum=a*k/b+c*k/d; //計(jì)算通分后的分子 cnt=gcd(sum,k); //計(jì)算分子和分母的最大公約數(shù) p=sum/cnt,q=k/cnt; //最后再分別化簡 cout<<p<<" "<<q<<endl; } return 0;}新聞熱點(diǎn)
疑難解答