PTA 有理数均值(难)

本题要求编写程序,计算N个有理数的平均值。

输入格式:

输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。

输出格式:

在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入样例1:

4
1/2 1/6 3/6 -5/10
 
结尾无空行

输出样例1:

1/6
 
结尾无空行

输入样例2:

2
4/3 2/3
 

输出样例2:

1

#include<stdio.h> 
int Gcd(int a, int b)求最大公约数
{
    return b==0?a:Gcd(b,a%b);
}
int main(){
    int n,temp,A=0,B=1,a,b,gcd;
    scanf("%d",&n);
    temp=n;
    while(temp--){
        scanf("%d/%d",&a,&b);
        if(a==0||b==0){
            continue;
        }
        if(A==0){
            A=a;
            B=b;
        }else{
            A=A*b+a*B;
            B=B*b;
        }
        if(temp==0){
            B*=n;
        }
        a=A>0?A:-A;
        b=B;
        gcd=Gcd(a,b);
        A/=gcd;
        B/=gcd;
    }
    if(A==0){
        printf("0");
    }else if(B!=1){
        printf("%d/%d",A,B);
    }else{
        printf("%d",A);
    }
    return 0; 
}

题目链接:题目详情 (pintia.cn)

代母转自:(3条消息) 有理数均值 (20分)(PTA)_南商的博客-CSDN博客

posted @ 2021-09-24 19:56  弈星  阅读(102)  评论(0)    收藏  举报