高级守护
3795 分数乘法
经验值:800 时间限制:1000毫秒
题目描述 Description
酷町猫最近在学习分数,它想用自己学到的计算机知识,来计算分数乘法的结果。
输入两个分数a,b,求出它们相乘的结果。
例如:
(2/4) * (2/4) ,它们的结果为:(2 * 2) / (4 * 4) = 4/16 = 1/4。
(4/2) * (4/2) ,它们的结果为:(4 * 4) / (2 * 2) = 16/4 = 4。
输入描述 Input Description
输入4个空格隔开的整数a1,a2,b1,b2。分别表示分数a的分子,分母,分数b的分子,分母。
输出描述 Output Description
输出分数a*b的结果(需要约分)。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
long long a,b,c,d,t1,t2,r;
cin>>a>>b>>c>>d;
t1=a*c;t2=b*d;
r=t1;
while(r!=0){
r=t1%t2;
t1=t2;
t2=r;
}
cout<<(a*c)/t2<<'/'<<(b*d)/t2;
return 0;
}
初级天翼
WA40,你的太复杂,参考一下
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
int lcm(int a,int b){
return a*b/gcd(a,b);
}
int main(){
int a,b,c,d,t,T,s;
cin>>a>>b>>c>>d;
s=lcm(b,d);
a*=s;b*=s;c*=s;d*=s;
t=a*c;
T=b*d;
if(t%T==0)
cout<<t/T;
else
cout<<t/gcd(t,T)<<"/"<<T/gcd(t,T);
return 0;
}