首页 > 其他 > 详细

分数求和

时间:2017-10-14 15:48:44      阅读:275      评论:0      收藏:0      [点我收藏+]

描述

输入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 <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;
    int sumn = 0, sumd = 1; // 储存结果,sumn/sumd
    while (t--) {
        int num, deno;
        char slash; //专门用来吃掉/的
        cin >> num >> slash >> deno;
        // 先相加 a/b + c/d = (a*d+c*b)/(b*d)
        sumn =  sumn*deno + num*sumd;
        sumd = sumd*deno;
    } 
    //后约分
    //先求最大公约数gcd,这里用的是欧几里得法
    int m = sumd , n = sumn, r;
    r = m % n;
    while (r != 0) {
        m = n;
        n = r;
        r = m % n;
    } 
    int gcd = n;
    //分子分母同时除以gcd就可以完成约分
    sumd /= gcd;
    sumn /= gcd;
    if (sumd > 1)
        cout << sumn << / << sumd << endl;
    else
        cout << sumn << endl; 
    return 0;
} 

 

分数求和

原文:http://www.cnblogs.com/Zhz0306/p/7666896.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!