1081.Rational Sum

来源:互联网 发布:vb6.0 sql模糊查询 编辑:程序博客网 时间:2024/04/29 15:05
【题意】
        求一连串分数的和,仍用分数表示结果

【思路】
        每加两个分数,先通分、再约分(涉及找最大公约数,注意分子为0的特殊情况的处理),最后判断整数部分是否为0,是否只有整数部分等情况即可

#include <iostream>#include <cstdio>using namespace std;#define MAXN 100int gcd(int a, int b){if(a<=b){if(b%a==0){return a;}return gcd(a,b%a);}else{//a>bif(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;}


0 0