12:分数求和
描述
-
输入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
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int chengji=1;
int n;
int fenzi[11],fenmu[11];
char c;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>fenzi[i]>>c>>fenmu[i];
if(chengji%fenmu[i]!=0) chengji=chengji*fenmu[i];
}
int sumfenzi=0;
for(int i=1;i<=n;i++)
{
fenzi[i]=fenzi[i]*(chengji/fenmu[i]);
sumfenzi=fenzi[i]+sumfenzi;
}
int minn=min(sumfenzi,chengji);
for(int i=minn;i>=1;i--)
if(sumfenzi%i==0 && chengji%i==0)
{
sumfenzi=sumfenzi/i;
chengji=chengji/i;
break;
}
if(sumfenzi%chengji==0) cout<<sumfenzi;
else cout<<sumfenzi<<"/"<<chengji;
}