#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{
return b==0 ? a : gcd(b,a%b);
}
ll lcm(ll a,ll b)
{
if(a>b)
return a/gcd(a,b)*b;
else
return b/gcd(b,a)*a;
}
int main()
{
void init1(ll a1,ll b1);
void add1(ll a1,ll b1,ll a2,ll b2);
void decrease1(ll a1,ll b1,ll a2,ll b2);
void mutli1(ll a1,ll b1,ll a2,ll b2);
void divide1(ll a1,ll b1,ll a2,ll b2);
ll a1,b1,a2,b2,z1=0,z2=0;
scanf("%lld/%lld %lld/%lld",&a1,&b1,&a2,&b2);
if(a1>b1)
z1=gcd(a1,b1);
else
z1=gcd(b1,a1);
a1/=z1,b1/=z1;
if(a2>b2)
z2=gcd(a2,b2);
else
z2=gcd(b2,a2);
a2/=z2,b2/=z2;
init1(a1,b1);
cout<<" + ";
init1(a2,b2);
cout<<" = ";
add1(a1,b1,a2,b2);
cout<<endl;
init1(a1,b1);
cout<<" - ";
init1(a2,b2);
cout<<" = ";
decrease1(a1,b1,a2,b2);
cout<<endl;
init1(a1,b1);
cout<<" * ";
init1(a2,b2);
cout<<" = ";
mutli1(a1,b1,a2,b2);
cout<<endl;
init1(a1,b1);
cout<<" / ";
init1(a2,b2);
cout<<" = ";
divide1(a1,b1,a2,b2);
return 0;
}
void init1(ll a1,ll b1)
{
if(a1==0)
cout<<0;
else
{
if(a1/b1==0)
{
if(a1>0&&b1>0)
cout<<a1<<"/"<<b1;
if(a1>0&&b1<0)
cout<<"("<<(-1)*a1<<"/"<<(-1)*b1<<")";
if(a1<0&&b1>0)
cout<<"("<<a1<<"/"<<b1<<")";
if(a1<0&&b1<0)
cout<<a1*(-1)<<"/"<<(-1)*b1;
}
else
{
if(a1%b1==0)
{
if(a1/b1>0)
cout<<a1/b1;
else
cout<<"("<<a1/b1<<")";
}
else
{
if(a1>0&&b1>0)
cout<<a1/b1<<" "<<a1%b1<<"/"<<b1;
if(a1>0&&b1<0)
cout<<"("<<a1/b1<<" "<<a1%(b1*(-1))<<"/"<<(-1)*b1<<")";
if(a1<0&&b1>0)
cout<<"("<<a1/b1<<" "<<((-1)*a1)%b1<<"/"<<b1<<")";
if(a1<0&&b1<0)
cout<<a1/b1<<" "<<a1%b1<<"/"<<(-1)*b1;
}
}
}
}
void add1(ll a1,ll b1,ll a2,ll b2)
{
ll z1=lcm(b1,b2);
ll z2=a1*z1/b1+a2*z1/b2;
init1(z2,z1);
}
void decrease1(ll a1,ll b1,ll a2,ll b2)
{
ll z1=lcm(b1,b2);
ll z2=a1*z1/b1-a2*z1/b2;
init1(z2,z1);
}
void mutli1(ll a1,ll b1,ll a2,ll b2)
{
ll sum1=a1*a2;
ll sum2=b1*b2;
ll z=0;
if(sum1>sum2)
z=gcd(sum1,sum2);
else
z=gcd(sum2,sum1);
sum1/=z,sum2/=z;
ll z2=sum1,z1=sum2;
init1(z2,z1);
}
void divide1(ll a1,ll b1,ll a2,ll b2)
{
bool inf=false;
ll sum1=a1*b2;
ll sum2=b1*a2;
ll z=0;
if(sum2==0)
cout<<"Inf";
else
{
if(sum1>sum2)
z=gcd(sum1,sum2);
else
z=gcd(sum2,sum1);
sum1/=z,sum2/=z;
ll z2=sum1,z1=sum2;
init1(z2,z1);
}
}
PAT乙级 1034.有理数四则运算
猜你喜欢
转载自blog.csdn.net/Ls_attack/article/details/79822757
今日推荐
周排行