zoukankan      html  css  js  c++  java
  • 1081 Rational Sum (20 分)

    题意

    给出n个分数,求分数的和。分数前面可能有负号。若答案为假分数,则要按照带分数的形式输出;整数则按整数输出;否则按真分数输出。

    注意点

    1. 注意最后输出时,需要按整数、带分数、真分数的情况分类处理。
    2. 注意最终结果为0的处理。
    3. 必须在每一步加法后都进行约分,如果等全部加完后才约分,则会溢出。
    4. 计算最大公约数时,要注意是计算分子分母绝对值的公约数。
    const int N=110;
    struct Fraction
    {
        LL up,down;
    }a[N];
    int n;
    
    LL gcd(LL a,LL b)
    {
        return b?gcd(b,a%b):a;
    }
    
    Fraction add(Fraction a,Fraction b)
    {
        Fraction c;
        c.down=a.down*b.down;
        c.up=a.up*b.down+b.up*a.down;
        LL d=gcd(abs(c.up),c.down);
        c.up/=d,c.down/=d;
        return c;
    }
    
    int main()
    {
        cin>>n;
    
        for(int i=0;i<n;i++) scanf("%lld/%lld",&a[i].up,&a[i].down);
    
        for(int i=0;i<n-1;i++)
            a[i+1]=add(a[i],a[i+1]);
    
        LL res=a[n-1].up/a[n-1].down;
        if(res != 0)
        {
            a[n-1].up%=a[n-1].down;
            cout<<abs(res);
        }
        
        if(res && a[n-1].up) cout<<' ';
    
        if(a[n-1].up != 0)
            cout<<a[n-1].up<<'/'<<a[n-1].down;
        
        if(res == 0 && a[n-1].up == 0)
            cout<<0;
        cout<<endl;
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    平衡的括号[UVA-673]
    Spark GraphX图形数据分析
    Spark sql
    Spark 分布式计算原理
    spark 算子实例
    window scala-2.11.8 安装
    spark 2.3.3 安装
    安装jdk
    Logstash-6.2.2安装和Kibana-6.2.2安装:
    elasticsearch-6.2.2 安装
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14426596.html
Copyright © 2011-2022 走看看