7-35 有理数均值(20 分)
本题要求编写程序,计算N个有理数的平均值。
输入格式:
输入第一行给出正整数$N(\leq 100)$;第二行中按照a1/b1 a2/b2 …
的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。
输出格式:
在一行中按照a/b
的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
输出样例1:
输入样例2:
输出样例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include<stdio.h> int gcd(int p,int q) { if (q==0) return p; int r = p%q; return gcd(q,r); } int main() { int N,sumA=0,sumB=1; scanf("%d",&N);
for(int i=0; i<N; i++) { int a=0,b=1; scanf("%d/%d",&a,&b); sumA *= b; sumA += a*sumB; sumB *= b;
if(i==N-1) sumB*=N; int divisor = gcd(sumA,sumB); sumA/=divisor;sumB/=divisor; }
if (sumA==0) printf("0"); else if(sumB==1) printf("%d",sumA); else printf("%d/%d",sumA,sumB);
return 0; }
|