分数求和
2018-02-27 20:58
148 查看
#include<bits/stdc++.h>
using namespace std;
int n,p[10001],q[10001],gbs=1,totfz;
int gcd(int a,int b)//求最大公约数
{
return b?gcd(b,a%b):a;//辗转相除法
}
int lcm(int a,int b)
{
return a*b/gcd(a,b);//最小公倍数:两数相乘除以最大公约数
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d/%d",&p[i],&q[i]);
gbs=lcm(gbs,q[i]);
}
for(int i=1;i<=n;i++)
totfz+=p[i]*(gbs/q[i]);
int ansgcd=gcd(max(totfz,gbs),min(totfz,gbs));
totfz/=ansgcd;
gbs/=ansgcd;//分子和分母分别约分至最简
cout<<totfz;
if(gbs!=1)
printf("/%d",gbs);
}
using namespace std;
int n,p[10001],q[10001],gbs=1,totfz;
int gcd(int a,int b)//求最大公约数
{
return b?gcd(b,a%b):a;//辗转相除法
}
int lcm(int a,int b)
{
return a*b/gcd(a,b);//最小公倍数:两数相乘除以最大公约数
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d/%d",&p[i],&q[i]);
gbs=lcm(gbs,q[i]);
}
for(int i=1;i<=n;i++)
totfz+=p[i]*(gbs/q[i]);
int ansgcd=gcd(max(totfz,gbs),min(totfz,gbs));
totfz/=ansgcd;
gbs/=ansgcd;//分子和分母分别约分至最简
cout<<totfz;
if(gbs!=1)
printf("/%d",gbs);
}
相关文章推荐
- 分数序列规律求和
- PAT CCCC天梯赛模拟赛 N个数求和(分数求和)
- 第八周 OJ 分数序列求和
- 分数求和
- 分数序列求和
- 分数求和
- c语言实现分数数列求和
- 1083 习题5-10 分数序列求和
- c++上机实验四——分数的累积求和
- N个数求和(cccc分数求和—gcd)
- 例题2-8 分数求和。
- OpenJudge计算概论-分数求和
- 分数求和保留两位小数
- 分数求和
- C++第10周项目1参考——利用循环求和 【项目2-分数的累加】
- 两分数求和化最简【杭电-2503】 附题
- Openjudge-计算概论(A)-分数求和
- HDOJ(HDU) 2156 分数矩阵(嗯、求和)
- 1098 简单分数数列求和
- 分数求和