PTA 有理数加法
本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
PS:除以上两种情况,还要考虑输出为1的情况
1 #include<stdio.h> 2 int fun(int m,int n){//辗转相除法求最大公因数 3 int rem; //余数,当余数为0的时候,最后的m即为最大公约数 4 while(n > 0){ 5 rem = m % n; 6 m = n; 7 n = rem; 8 } 9 return m; 10 } 11 int main(){ 12 int a1,b1,a2,b2,t; 13 int x,sum,all; 14 scanf("%d/%d",&a1,&b1); 15 scanf("%d/%d",&a2,&b2); 16 if(b1!=b2){ 17 t=fun(b1,b2); 18 x=b1*b2; 19 all=x/t; 20 a1=a1*(all/b1); 21 a2=a2*(all/b2); 22 sum=a1+a2; 23 }else{ 24 all=b1; 25 sum=a1+a2; 26 } 27 if(all!=sum){ 28 t=fun(sum,all); 29 sum/=t; 30 all/=t; 31 if(all==1){ 32 printf("%d",sum); 33 }else{ 34 printf("%d/%d",sum,all); 35 } 36 }else { 37 printf("%d",sum/all); 38 } 39 return 0; 40 }
本文来自博客园,作者:弈星,转载请注明原文链接:https://www.cnblogs.com/8023yyl/p/14601921.html

浙公网安备 33010602011771号