#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
LL gcd(LL a,LL b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
LL a,b,c,d;
void print(LL a,LL b)
{
if(b==0) {cout<<"Inf"; return ;}
if(a==0) {cout<<"0"; return;}
int sign=1; // 符号
if(a*1.0/b<0) sign=-1; //注意这里用除法判断 因为乘法可能会爆long long
a=labs(a),b=labs(b);
LL k=a/b; //进位
LL temp=gcd(a,b);
a=a/temp,b=b/temp; //约分
a=a-k*b;
if(sign<0) cout<<"(";
if(k)
{
if(a) printf("%lld %lld/%lld",sign*k,a,b);
else printf("%lld",sign*k);
}
else printf("%lld/%lld",sign*a,b);
if(sign<0) cout<<")";
}
int main(void)
{
scanf("%lld/%lld %lld/%lld",&a,&b,&c,&d);
print(a,b),printf(" + "),print(c,d),printf(" = "),print(a*d+b*c,b*d); puts("");
print(a,b),printf(" - "),print(c,d),printf(" = "),print(a*d-b*c,b*d); puts("");
print(a,b),printf(" * "),print(c,d),printf(" = "),print(a*c,b*d); puts("");
print(a,b),printf(" / "),print(c,d),printf(" = "),print(a*d,b*c); puts("");
return 0;
}
【PAT乙级】1034 有理数四则运算 (20 分)
最新推荐文章于 2024-08-06 17:42:20 发布