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 }

 

 
posted @ 2021-03-31 15:59  弈星  阅读(186)  评论(0)    收藏  举报