2 条题解

  • 3
    @ 2024-7-26 9:27:15

    一样情况

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int tot;
    long long ans=1,ans1;
    string s;
    struct nond{
        int first,second,pos;
    }v[101];
    int gcd(long long x,long long y){
        return x==0?y:gcd(y%x,x);
    }
    int main(){
        cin>>s;
        if(s[0]!='-')    s='+'+s;
        int len=s.length(),sum=0;
        for(int i=0;i<len;i++){
            if(s[i]>='0'&&s[i]<='9')    sum*=10,sum+=s[i]-'0';
            else{
                if(s[i]=='/')    v[tot].first=sum;
                else{
                    v[tot].second=sum;
                    if(s[i]=='+')    v[++tot].pos=1;
                    else if(s[i]=='-')    v[++tot].pos=-1; 
                }sum=0;
            }
        }
        v[tot].second=sum;
        ans=v[1].second;
        for(int i=2;i<=tot;i++)
            ans=(v[i].second*ans)/gcd(v[i].second,ans);
        for(int i=1;i<=tot;i++){
            int GCD=gcd(v[i].first,v[i].second);
            v[i].first/=GCD;v[i].second/=GCD;
            v[i].first*=ans/v[i].second;
            ans1+=v[i].pos*v[i].first; 
        }
        if(ans/gcd(ans,abs(ans1))==1)    cout<<ans1/gcd(abs(ans1),ans);
        else cout<<ans1/gcd(abs(ans1),ans)<<"/"<<ans/gcd(abs(ans1),ans);
    }
    

信息

ID
2286
时间
1000ms
内存
512MiB
难度
9
标签
递交数
13
已通过
2
上传者