3 条题解

  • 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
      标签
      (无)
      递交数
      674
      已通过
      151
      上传者