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;
    }
    
    • 0
      @ 2025-10-5 23:44:21

      #include<stdio.h>

      int main(){

      char x[8];

      int a,b,n,m,g,sum,t;

      while(scanf("%s",x)!=EOF){

      a=x[0]-'0';

      b=x[2]-'0';

      n=x[4]-'0';

      m=x[6]-'0';

      for(int i=b;i>=b;i++){

      if(i%b0&&i%m0){

      g=i;

      break;

      }

      }

      a=a*(g/b);

      n=n*(g/m);

      if(x[3]=='+'){

      sum=a+n;

      if(sum==0){

      printf("0\n");

      continue;

      }

      if(sum%g==0){

      printf("%d\n",sum/g);

      continue;

      }

      int y=g;

      while(y!=0){

      t=sum%y;

      sum=y;

      y=t;

      }

      g=g/sum;

      sum=(a+n)/sum;

      printf("%d/%d\n",sum,g);}

      if(x[3]=='-'){

      sum=a-n;

      if(sum==0){

      printf("0\n");

      continue;

      }

      if(sum<0){

      sum=0-sum;

      }

      int y=g;

      while(y!=0){

      t=sum%y;

      sum=y;

      y=t;

      }

      g=g/sum;

      sum=(a-n)/sum;

      printf("%d/%d\n",sum,g);

      }

      }

      return 0;

      }

      • 0
        @ 2025-9-13 23:28:06
        #include <bits/stdc++.h>
        using namespace std;
        
        
        int main(){
            int a, b, c, d;
            char op;
            int fenmu, fenzi;
            while(~scanf("%d/%d%c%d/%d", &a, &b, &op, &c, &d)) {
                fenmu = b * d;
                if (op == '+') {
                    fenzi = a * d + b * c;
                } else {
                    fenzi = a * d - b * c;
                }
                if (fenzi == 0) {
                    cout << "0\n";
                } else {
                    int g = gcd(fenmu, fenzi);
                    fenzi /= g;
                    fenmu /= g;
                    if (fenmu == 1) {
                        cout << fenzi << '\n';
                    } else {
                        cout << fenzi << '/' << fenmu << '\n';
                    }
                }
            }
            return 0;
        }
        
        • 0
          @ 2024-12-11 12:29:42

          #include<stdio.h>

          int main() { int t; char s[100]; int a[100]; while (scanf("%s", s) != EOF) { a[0] = s[0] - '0'; a[2] = s[2] - '0'; a[4] = s[4] - '0'; a[6] = s[6] - '0'; int fm = a[2] * a[6]; int fz1 = a[0] * a[6]; int fz2 = a[4] * a[2]; int fzh = fz1 + fz2; int fzc = fz1 - fz2; if (a[2] == a[6]) { if (s[3] == '+') { int p = a[0] + a[4]; for (int k = p; k >= 1; k--) { if (p % k == 0 && a[2] % k == 0) { p = p / k; a[2] = a[2] / k; break; } } if (a[2] == 1) { printf("%d\n", p); } else { printf("%d/%d\n", p, a[2]); }

          } if (s[3] == '-') { if (a[0] == a[4]) { printf("0"); } else if (a[0] > a[4]) { int p = a[0] - a[4]; for (int k = p; k >= 1; k--) { if (p % k == 0 && a[2] % k == 0) { p = p / k; a[2] = a[2] / k; break; } } if (a[2] == 1) { printf("%d\n", p); } else { printf("%d/%d\n", p, a[2]); } } else { int p = a[4] - a[0]; for (int k = p; k >= 1; k--) { if (p % k == 0 && a[2] % k == 0) { p = p / k; a[2] = a[2] / k; break; } } if (a[2] == 1) { printf("%d\n", a[4] - a[0]); } else { printf("-%d/%d\n", a[4] - a[0], a[2]); }

          } } } else { if (s[3] == '+') { for (int k = fzh; k >= 1; k--) { if (fzh % k == 0 && fm % k == 0) { fzh = fzh / k; fm = fm / k; break; } } if (fm == 1) { printf("%d\n", fzh); } else { printf("%d/%d\n", fzh, fm); }

          }
          if (s[3] == '-') {
          	if (fzc == 0) {
          		printf("0");
          	} else if (fzc > 0) {
          		for (int k = fzc; k >= 1; k--) {
          			if (fzc % k == 0 && fm % k == 0) {
          				fzc = fzc / k;
          				fm = fm / k;
          				break;
          			}
          		}
          		if (fm == 1) {
          			printf("%d\n", fzc);
          		} else {
          			printf("%d/%d\n", fzc, fm);
          		}
          
          	} else if (fzc < 0) {
          		fzc = -fzc;
          		for (int k = fzc; k >= 1; k--) {
          			if (fzc % k == 0 && fm % k == 0) {
          				fzc = fzc / k;
          				fm = fm / k;
          				break;
          			}
          		}
          		if (fm == 1) {
          			printf("-%d\n", fzc);
          		} else {
          			printf("-%d/%d\n", fzc, fm);
          		}
          
          	}
          }
          

          }

          }

          return 0;

          }

          • @ 2024-12-11 12:30:04

            硬上

        • 0
          @ 2024-12-7 16:33:45

          `#include<stdio.h> #include<math.h> #include<string.h>

          int GCD(int a,int b)//求最大公因数的函数 { a= abs(a);//整数的绝对值 b = abs(b); if(b0) { return a; }else { return GCD(b,a%b); } } int main() { int a,b,c,d;//a,c做分子,b,d做分母 char s;//加号或者减号 int gcd;//公因数 int gbs;//公倍数 int fenzi;//相减或者相加后的分子 while((scanf("%d/%d%c%d/%d",&a, &b, &s, &c, &d))!=EOF) { gcd = GCD(b,d); gbs = b*d / gcd;//求最小公倍数进行通分 //通分前先判断相减或者相减 if(s'+') { fenzi = a*(gbs / b) + c (gbs / d); }else { fenzi = a(gbs / b) - c*(gbs / d); } //对结果进行判断 if(fenzi == 0) { printf("0\n"); continue; } if(fenzi == gbs) { printf("1\n"); continue; } gcd = GCD(fenzi,gbs); fenzi /= gcd; gbs /= gcd; if(fenzi%gbs==0) { printf("%d\n",fenzi / gbs); continue; } printf("%d/%d\n",fenzi,gbs); } return 0; }

          • 1

          信息

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