首页 > 代码库 > 结构-05. 有理数均值

结构-05. 有理数均值

结构-05. 有理数均值(20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
乔林(清华大学)

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

输入格式:

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

输出格式:

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

输入样例1:
41/2 1/6 3/6 -5/10
输出样例1:
1/6
输入样例2:
24/3 2/3
输出样例2:
1
 1 #include<stdio.h> 2 #include<math.h> 3 #include<stdlib.h> 4 #include<string.h> 5 int main() 6 { 7     struct rational 8     { 9         int a;10         int b;11     };12     rational x, r[110];13     int i, n;14     scanf("%d", &n);15     for(i = 0; i < n; i++)16     {17         scanf("%d/%d", &r[i].a, &r[i].b);18     }19     x.a = 0;20     x.b = 1;21     for(i = 0; i < n; i++)22     {23         x.a = x.a * r[i].b + x.b * r[i].a;24         x.b *= r[i].b;25     }26     x.b *= n;27     int temp, h, l;28     h = x.a > x.b ? x.a : x.b;29     l = x.a < x.b ? x.a : x.b;30     while(l)31     {32         temp = h % l;33         h = l;34         l = temp;35     }36     if(h != 0)37     {38         x.a /= h;39         x.b /= h;40     }41     if(x.a == 0)42     printf("%d\n", x.a);43   else if(x.b == 1)44     printf("%d\n", x.a);45   else46     printf("%d/%d\n", x.a, x.b);47   return 0;48     return 0;49 }

 

结构-05. 有理数均值