6 条题解

  • 2
    @ 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-11-14 20:39:03
      #include <stdio.h>
      int main() {
      	int a, b, c, d;
      	char m;
      	while (scanf("%d/%d%c%d/%d", &a, &b, &m, &c, &d) != EOF) {
      		if (m == '+') {
      			int zi = a * d + b * c;
      			int mu = b * d;
      			int p, q;
      			int g = mu, temp;
      			int x = zi;
      			while (x != 0) {
      				temp = g % x;
      				g = x;      //辗转相除算最大公约数
      				x = temp;
      			}
      			p = zi / g;
      			q = mu / g;
      			if (q < 0) {
      				p = -p;
      				q = -q;
      			}
      			if (q == 1) {
      				printf("%d\n", p);//特例,分母为1时
      			} else {
      				printf("%d/%d\n", p, q);
      			}
      		} else if (m == '-') {
      			int zi = a * d - b * c;
      			int mu = b * d;
      			int mu1;
      			int flag = 1;
      			if (zi < 0) {
      				mu1 = -zi;
      				flag = 0;
      			} else {
      				mu1 = zi;
      				flag = 1;
      			}
      			int g = mu, temp;
      			int x = mu1;
      			while (x != 0) {
      				temp = g % x;
      				g = x;       //同样的辗转相除
      				x = temp;
      			}
      			int p = zi / g;
      			int q = mu / g;
      			if (q < 0) {
      				p = -p;
      				q = -q;
      			}
      			if (p == 0) {
      				printf("0\n");
      			} else {
      				printf("%d/%d\n", p, q);
      			}
      
      		}
      	}
      }
      
      • 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
            标签
            (无)
            递交数
            753
            已通过
            172
            上传者