【题意】
求一连串分数的和,仍用分数表示结果
【思路】
每加两个分数,先通分、再约分(涉及找最大公约数,注意分子为0的特殊情况的处理),最后判断整数部分是否为0,是否只有整数部分等情况即可
#include <iostream>
#include <cstdio>
using namespace std;
#define MAXN 100
int gcd(int a, int b){
if(a<=b){
if(b%a==0){
return a;
}
return gcd(a,b%a);
}
else{//a>b
if(a%b==0){
return b;
}
return gcd(a%b,b);
}
}
int main(int argc, char const *argv[])
{
int numerator,denominator,n;
int preNumerator=0,preDenominator=1;
int gongYueShu;
cin >> n;
for(int i=0; i<n; i++){
scanf("%d/%d", &numerator, &denominator);
preNumerator = preNumerator*denominator+numerator*preDenominator;
preDenominator *= denominator;
if(preNumerator==0){
preDenominator = 1;
continue;
}
gongYueShu = gcd(preNumerator,preDenominator);
preNumerator /= gongYueShu;
preDenominator /= gongYueShu;
}
if(preNumerator==0){
cout << 0;
}
else{
if(preDenominator==1){
cout << preNumerator;
}
else{
int integer = preNumerator/preDenominator;
if(integer!=0){
cout << integer << " ";
}
cout << preNumerator%preDenominator << '/' << preDenominator;
}
}
system("pause");
return 0;
}