Fraction 分数 minus - multiply * add divide
struct Fraction{
int up,down;
};
Fraction reduction(Fraction t){
if(t.down<0){
t.down*=-1;
t.up*=-1;
}
if(t.up==0){
t.down=1;
}else{
int d=gcd(abs(t.down),abs(t.up));
t.down/=d;
t.up/=d;
}
return t;
}
Fraction add(Fraction f1,Fraction f2){
Fraction res;
res.up=f1.up*f2.down+f2.up*f1.down;
res.down=f1.down*f2.down;
return reduction(res);
}
Fraction minu(Fraction f1,Fraction f2){
Fraction res;
res.up=f1.up*f2.down-f2.up*f1.down;
res.down=f1.down*f2.down;
return reduction(res);
}
Fraction multi(Fraction f1,Fraction f2){
Fraction res;
res.up=f1.up*f2.up;
res.down=f1.down*f2.down;
return reduction(res);
}
Fraction divide(Fraction f1,Fraction f2){
Fraction res;
res=f1.up*f2.down;
res=f1.down*f2.up;
return reduction(res);
}
void showResult(Fraction f){
//a b 为整数,a+b 则可能超过整数
// 给分数的输出加了一些特殊的 输出限制 如果分母是1 直接光输出分子
// 如果为假分数 变为真分数
if(f.down==1) printf("lld\n",f.up);
else if(abs(f.up)>f.down)
printf("%lld %lld/%lld\n",f.up/f.down,abs(f.up),f.down);
else
printf("%lld/%lld\n",f.up,f.down);
}