1 条题解

  • 2
    @ 2023-7-3 11:27:11

    模拟计算过程即可。

    #include <bits/stdc++.h>
    using namespace std;
    int a,b,c,d,gcd,lcm;
    string s,A,B,C,D;
    char opt;
    int main(){
        //记得在提交时将编译器改为C++14!!!否则无法使用stoi和__gcd函数
        cin>>s;
        int i=0;
        for (;s[i]!='/';i++){
            A+=s[i];
        }
        for (i++;s[i]!='+'&&s[i]!='-';i++){
            B+=s[i];
        }
        opt=s[i];
        for (i++;s[i]!='/';i++){
            C+=s[i];
        }
        for (i++;i<s.size();i++){
            D+=s[i];
        }
        a=stoi(A);//你也可以手写stoi函数
        b=stoi(B);
        c=stoi(C);
        d=stoi(D);
        //求出分子、分母和运算符
        gcd=__gcd(b,d);//可手写
        lcm=b*d/gcd;
        a*=lcm/b;
        c*=lcm/d;
        b=lcm;
        //通分
        if (opt=='+'){
            a+=c;
        }else{
            a-=c;
        }
        if (a<0){//处理负数
            a=-a;
            cout<<'-';
        }
        if (a%b==0){//处理整数
            cout<<a/b;
            return 0;
        }
        gcd=__gcd(a,b);//约分
        cout<<a/gcd<<'/'<<b/gcd;
        return 0;
    }
    
    • 1

    信息

    ID
    333
    时间
    1000ms
    内存
    16MiB
    难度
    2
    标签
    递交数
    37
    已通过
    25
    上传者