分数化简
题目描述
分数化简是数学中经常运用的知识点之一。
编写程序,对于次询问,每次询问一组分子分母,要求将分子分母化至最简
输入格式
第一行一个整数
接下来的行,每行两个整数和,分别表示分子和分母
输出格式
行,每行对应一次询问的答案
样例数据
样例输入
5
3 1
1 4
5 10
21 14
1331 22
样例输出
3 1
1 4
1 2
3 2
121 2
数据范围
对于40%的数据,
对于100%的数据,
代码解析
化简分数前一定要求出分子分母的最大公约数,求最大公约数可以用辗转相除法。代码如下:
long long gcd(long long a,long long b){
if(a%b==0) return b;
else return gcd(b,a%b);
}
当然也可以使用C++自带的__gcd(a,b),代码如下:
int c=__gcd(a,b);
得到最大公约数后代码就简单了:
#include<bits/stdc++.h>
using namespace std;
long long q,x,y,a;
long long gcd(long long a,long long b){
if(a%b==0) return b;
else return gcd(b,a%b);
}
int main(){
cin>>q;
for(long long i=1;i<=q;i++){
cin>>x>>y;
a=gcd(x,y);
cout<<x/a<<" "<<y/a<<endl;
}
return 0;
}