本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照a1/b1 a2/b2
的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照a/b
的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
结尾无空行
输出样例1:
1/2
结尾无空行
输入样例2:
4/3 2/3
输出样例2:
2
#include<stdio.h>
int main(){
int a,b,c,d;
scanf("%d/%d %d/%d",&c,&a,&d,&b);
int m,n;
if(a==b){ //判断分母是否相等,相等则对分子相加。
m=a;
n=c+d;
}else{ //否则就分子分母同乘以一个数(不一定是最小公倍数)
m=a*b;
n=c*b+a*d;
}
for(int i=m;i>=2;i--){ //求最小公倍数
if(m%i==0&&n%i==0){
m=m/i;
n=n/i;
break;
}
}
if(n%m==0)
printf("%d",n);//判断结果为1的情况。
else
printf("%d/%d",n,m);
return 0;
}