结构-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:
4
1/2 1/6 3/6 -5/10
输出样例1:
1/6
输入样例2:
2
4/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   else
46     printf("%d/%d\n", x.a, x.b);
47   return 0;
48     return 0;
49 }

 

posted @ 2015-01-25 15:11  Yomman  阅读(938)  评论(0编辑  收藏  举报