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)
本文来自博客园,作者:弈星,转载请注明原文链接:https://www.cnblogs.com/8023yyl/p/15331924.html

浙公网安备 33010602011771号