#include<iostream>
using namespace std;
long long gcd(long long a,long long b){
return b==0?a:gcd(b,a%b);
}
void showres(long long a,long long b){
if(b<0){
a=-a;
b=-b;
}
if(a==0) b=1;
else{
long long d=gcd(abs(a),b);
a/=d;
b/=d;
}
if(a<0) printf("(");
if(b==1) printf("%lld",a);
else{
if(abs(a)/b) printf("%lld %lld/%lld",a/b,abs(a)%b,b); //注意abs(a)
else printf("%lld/%lld",a,b);
}
if(a<0) printf(")");
}
int main(){
long long a,b,c,d;
scanf("%lld/%lld %lld/%lld",&a,&b,&c,&d);
showres(a,b);printf(" + ");showres(c,d);printf(" = ");showres(a*d+b*c,b*d);printf("\n");
showres(a,b);printf(" - ");showres(c,d);printf(" = ");showres(a*d-b*c,b*d);printf("\n");
showres(a,b);printf(" * ");showres(c,d);printf(" = ");showres(a*c,b*d);printf("\n");
showres(a,b);printf(" / ");showres(c,d);printf(" = ");
if(c==0) printf("Inf\n");
else { //代码段里两行的话加上花括号
showres(a*d,b*c);
printf("\n");
}
return 0;
}
PAT乙级-1034 有理数四则运算(20 分)
最新推荐文章于 2024-07-19 15:56:27 发布