1 条题解

  • 1
    @ 2023-7-4 8:40:22

    还是模拟计算过程。

    #include <bits/stdc++.h>
    using namespace std;
    string s,num;
    int a[10001],b[10001];
    int ai,bi,gcd,lcm,fz;
    int main(){
        //记得将编译器改为C++14
        cin>>s;
        for (int i=0;i<s.size();i++){
            if (s[i]=='/'){
                a[++ai]=stoi(num);
                num="";
                continue;
            }
            if (s[i]=='+'){
                b[++bi]=stoi(num);
                num="";
                continue;
            }
            num+=s[i];
        }
        b[++bi]=stoi(num);
        //求出各分子和分母
        gcd=lcm=b[1];
        for (int i=2;i<=bi;i++){
            gcd=__gcd(lcm,b[i]);
            lcm=lcm*b[i]/gcd;
        }
        for (int i=1;i<=ai;i++){
            a[i]*=lcm/b[i];
            fz+=a[i];
        }
        //通分
        if (fz%lcm==0){//处理整数
            cout<<fz/lcm;
            return 0;
        }
        gcd=__gcd(fz,lcm);//约分
        cout<<fz/gcd<<'/'<<lcm/gcd;
        return 0;
    }
    
    • 1

    信息

    ID
    336
    时间
    1000ms
    内存
    16MiB
    难度
    4
    标签
    递交数
    45
    已通过
    21
    上传者