2 条题解

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