5 条题解
-
0
#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
#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
#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
#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;
}
-
0
`#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
- 上传者