zoukankan      html  css  js  c++  java
  • OpenJudge计算概论-分数求和

    /*======================================================
    1006:分数求和
    总时间限制: 1000ms 内存限制: 65536kB
    描述
    输入n个分数并对他们求和,用约分之后的最简形式表示。 
    比如: 
    q/p = x1/y1  + x2/y2 +....+ xn/yn, 
    q/p要求是归约之后的形式。 
    如:5/6已经是最简形式,3/6需要规约为1/2, 3/1需要规约成3,10/3就是最简形式。 
    
    PS:分子和分母都没有为0的情况,也没有出现负数的情况
    
    输入
    第一行的输入n,代表一共有几个分数需要求和
    接下来的n行是分数
    输出
    输出只有一行,即归约后的结果
    样例输入
    2
    1/2
    1/3
    样例输出
    5/6
    
    解析:这个题呢,主要是要注意最后输出时分母可能是1.
    另外,这里保证了输入的分子和分母都没有0和负数,所以处理简单化了。 
    ========================================================*/
    #include<stdio.h>
    struct fraction
    {
        int a,b;//分数a/b的分子和分母 
    };
    int Gcd(int a,int b);//返回a和b的最大公约数 
    int Lcm(int a,int b);//返回a和b的最小公倍数 
    int main()
    {
        int n,i,d;
        struct fraction f1,f2;
        char c;
        //freopen("3.in","r",stdin);
        scanf("%d",&n);
        scanf("%d%c%d",&f2.a,&c,&f2.b);
        d=Gcd(f2.a,f2.b);
        if(d>1)
        {
            f2.a=f2.a/d;
            f2.b=f2.b/d;
        }
        for(i=2;i<=n;i++)
        {
            scanf("%d%c%d",&f1.a,&c,&f1.b);
            d=Lcm(f2.b,f1.b);
            f2.a=f2.a*d/f2.b+f1.a*d/f1.b;
            f2.b=d;
            d=Gcd(f2.a,f2.b);
            if(d>1)
            {
                f2.a=f2.a/d;
                f2.b=f2.b/d;
            }
        }
        if(f2.b>1)
            printf("%d/%d
    ",f2.a,f2.b);
           else
               printf("%d
    ",f2.a);
        return 0;
    }
    int Gcd(int a,int b)
    {
        int c;
        if(a<=0||b<=0) return -1;
        if(a<b)
        {
            c=a;
            a=b;
            b=c;
        }
        c=a%b;
        while(c!=0)
        {
            a=b;
            b=c;
            c=a%b;
        }
        return b;
    }
    int Lcm(int a,int b)
    {
        int c;
        if(a<=0||b<=0) return -1;
        c=Gcd(a,b);
        return a*b/c;
    }
  • 相关阅读:
    常见模块和包
    二分查找算法
    常见内置函数
    Django总目录
    nginx配置站点
    Arduino语言
    Python连接Arduino的方法
    机器人学习
    Redis
    arduino总目录
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/3448694.html
Copyright © 2011-2022 走看看