1209:分数求和

简介: 1209:分数求和

1209:分数求和

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

输入n个分数并对他们求和,并用最简形式表示。所谓最简形式是指:分子分母的最大公约数

1;若最终结果的分母为1,则直接用整数表示。

如:5/6、10/3均是最简形式,而3/6需要化简为1/2,3/1需要化简为3。

分子和分母均不为0,也不为负数。

【输入】

第一行是一个整数n,表示分数个数,1≤n≤10;

接下来n行,每行一个分数,用"p/q"的形式表示,不含空格,p,q均不超过10。

【输出】

输出只有一行,即最终结果的最简形式。若为分数,用"p/q"的形式表示。

【输入样例】

2

1/2

1/3

【输出样例】

5/6

【来源】

No

1. //本题有坑 测试p和q会超过10
2. #include<cstdio>
3. #include<iostream> 
4. #include<cstring>
5. #include<cstdlib>
6. using namespace std;
7. int gcb(int x,int y)
8. {
9.  return y? gcb(y,x%y):x;
10. }
11. void get_value(char *s,int &a,int &b)
12. {
13.   int k=0;
14.   while(s[k++]!='/');
15.   s[k-1]='\0';
16.   a=atoi(s);
17.   b=atoi(s+k);
18. }
19. int main()
20. {
21.   char s[100];
22.   int a,b;
23.   int n,x=0,y=1,m,len;
24.   scanf("%d",&n);
25.   for(int i=1;i<=n;i++){
26.     scanf("%s",s); 
27.     get_value(s,a,b);
28.     x=x*b+a*y;
29.     y=y*b;
30.     m=gcb(x,y);
31.     x/=m;
32.     y/=m;
33.   }
34.   printf("%d/%d",x,y);  
35.   return 0;
36.  }
1. #include<cstdio>
2. #include<iostream> 
3. #include<cstring>
4. #include<cstdlib>
5. using namespace std;
6. int n,p[10001],q[10001],gbs=1,totfz;
7. int gcb(int a,int b)//求最大公约数 
8. {
9.  if(a%b==0) return b;
10.   return gcb(b,a%b);
11. }
12. int lcm(int a,int b)//求最小公倍数
13. {
14.   return a*b/gcb(a,b); 
15. }
16. int main()
17. {
18.   scanf("%d",&n);
19.   for(int i=1;i<=n;i++){
20.     scanf("%d/%d",&p[i],&q[i]);
21.     gbs=lcm(gbs,q[i]); 
22.   }
23.   for(int i=1;i<=n;i++)
24.     totfz+=p[i]*(gbs/q[i]); 
25.   int ansgcd=gcb(max(totfz,gbs),min(totfz,gbs));
26.   totfz/=ansgcd;gbs/=ansgcd;
27.   printf("%d",totfz);
28.   if(gbs!=1) printf("/%d",gbs); 
29.   return 0;
30.  }

 


相关文章
|
7月前
PTA-求分数序列的前n项和分数 20
求分数序列的前n项和分数 20
84 0
|
并行计算 算法 搜索推荐
Speccpu2017分数的一点介绍
对Spec2017的speed和rate分数做点介绍
3900 0
|
3月前
|
存储 C语言 Python
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
647 4
|
4月前
|
Python
累加求和 1~ n求和
累加求和 1~ n求和
86 4
|
6月前
分数序列
【6月更文挑战第9天】分数序列。
50 5
|
6月前
【P1035】级数求和
【P1035】级数求和
|
7月前
16.有一分数序列 1/2,2/3,3/5,5/8,8/13,13/21,…求出这个序列的前200 项之和
16.有一分数序列 1/2,2/3,3/5,5/8,8/13,13/21,…求出这个序列的前200 项之和
76 0
|
7月前
分数1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 求和
分数1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 求和
94 0
wustojc3010快速求和
wustojc3010快速求和
62 0
|
机器学习/深度学习 Windows
1228 序列求和 (伯努利数)
1228 序列求和 (伯努利数)
97 0