#include <bits/stdc++.h>
using namespace std;
long gcd(long a,long b)//求a b的大公因数
{
if(a<b) swap(a,b);
while(b)
{
long r = a%b;
a = b;
b = r;
}
return a;
}
void print(long a,long b)
{
int flag = 1;//符号
if(a<0) flag = -flag;
if(b<0) flag = -flag;
//最简分数
long r = gcd(a,b);//r为a b的大公因数
a/=r;//分子
b/=r;//分母
if(flag == -1) cout<<"(";
if(b == 0) //分母为0
{
cout<<"Inf";
}
else if(a%b == 0) //整数形式
{
cout<<a/b;
}
else{
bool K = 0;
if(a/b != 0) //是否为假分数--》判断a/b(a>b?)是否 前面有整数输出
{
K = 1;
cout<<a/b<<" ";//输入 1
a%=b;
}
{
a = abs(a);//绝对值
b = abs(b);
if(!K && flag == -1) cout<<"-";
printf("%d/%d",a,b);//输出 分数
}
}
if(flag == -1) cout<<")";
}
int main() {
long a1,b1,a2,b2,a3,b3;
scanf("%ld/%ld %ld/%ld",&a1,&b1,&a2,&b2);
//1
print(a1,b1);cout<<" + ";print(a2,b2);cout<<" = ";print(a1*b2 + a2 * b1, b1*b2);cout<<endl;
//2
print(a1,b1);cout<<" - ";print(a2,b2);cout<<" = ";print(a1*b2 - a2 * b1, b1*b2);cout<<endl;
//3
print(a1,b1);cout<<" * ";print(a2,b2);cout<<" = ";print(a1*a2, b1*b2);cout<<endl;
//4
print(a1,b1);cout<<" / ";print(a2,b2);cout<<" = ";print(a1*b2, b1*a2);cout<<endl;
return 0;
}
/*
* 2/3 -4/2
*/
pat:1034
最新推荐文章于 2024-07-12 18:02:43 发布