5 条题解

  • 0
    @ 2025-10-6 16:18:33
    #include<stdio.h>
    #include<stdlib.h>
    int gcd(int A,int B){//最大公约数
        int temp;
        A=abs(A);
        B=abs(B);
        while(B!=0){
            temp=B;
            B=A%B;
            A=temp;
        }return A;
    }int lcm(int c,int d){//最小公倍数
        return c*d/gcd(c,d);
    }
    int main()
    {
        int a,b,c,d;
        char n;
        while(scanf("%d/%d%c%d/%d",&a,&b,&n,&c,&d)!=EOF){
            int mu=lcm(b,d);
            int zi;
            if(n=='+'){
                zi=a*(mu/b)+c*(mu/d);//分数分子相加减法(下同)
            }else{
                zi=a*(mu/b)-c*(mu/d);
            }int same=gcd(zi,mu);//进行约分
            zi=zi/same;
            mu=mu/same;
            if(zi==0){//分类讨论
                printf("0\n");
            }else if(mu==1){
                printf("%d\n",zi);
            }else{
                printf("%d/%d\n",zi,mu);
            }
        }
        return 0;
    }
    

    信息

    ID
    168
    时间
    3000ms
    内存
    128MiB
    难度
    7
    标签
    (无)
    递交数
    700
    已通过
    158
    上传者