题目
pata1088
题目思路
分数计算的常规题目,分别计算减加乘除后输出即可,注意要采用long long变量。
参考代码
#include<iostream>
using namespace std;
typedef struct{
long long num;
long long de;
}fen;
void pt(fen f1);
int to(long long a,long long b);
int main()
{
fen f1,f2,sum,ji,cheng,chu;
scanf("%lld/%lld %lld/%lld",&f1.num,&f1.de,&f2.num,&f2.de);
sum.num=f1.num*f2.de+f2.num*f1.de;
sum.de=f1.de*f2.de;
ji.num=f1.num*f2.de-f2.num*f1.de;
ji.de=f1.de*f2.de;
cheng.num=f1.num*f2.num;
cheng.de=f1.de*f2.de;
chu.num=f1.num*f2.de;
chu.de=f1.de*f2.num;
pt(f1);
printf(" + ");
pt(f2);
printf(" = ");
pt(sum);
printf("\n");
pt(f1);
printf(" - ");
pt(f2);
printf(" = ");
pt(ji);
printf("\n");
pt(f1);
printf(" * ");
pt(f2);
printf(" = ");
pt(cheng);
printf("\n");
pt(f1);
printf(" / ");
pt(f2);
printf(" = ");
if(f2.num==0)
printf("Inf");
else
pt(chu);
return 0;
}
void pt(fen f1)
{
long long f=1,k=0,t=0;
if(f1.num<0)
{
f=-1;
f1.num*=f;
}
if(f1.de<0)
{
f*=-1;
f1.de*=-1;
}
k=to(f1.num,f1.de);
f1.num/=k;
f1.de/=k;
t=f1.num/f1.de;
f1.num=f1.num%f1.de;
if(f==-1&&(t!=0||f1.num!=0))
printf("(-");
if(t!=0||(t==0&&f1.num==0))
{
printf("%lld",t);
if(f1.num!=0)
printf(" ");
}
if(f1.num!=0)
printf("%lld/%lld",f1.num,f1.de);
if(f==-1)
printf(")");
}
int to(long long a,long long b)
{
if(b==0)
return a;
else
return to(b,a%b);
}