sample input
15[6/35]-8[4/7]
sample output
[6/35]
代码
#include <iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int d1,a1,b1,d2,a2,b2;
char c;
while(scanf("%d[%d/%d]%c%d[%d/%d]",&d1,&a1,&b1,&c,&d2,&a2,&b2)!=EOF)
{
a1+=d1*b1;
a2+=d2*b2;
int mu=b1*b2/__gcd(b1,b2);
int zi;
switch(c)
{
case '+':zi=a1*(mu/b1)+a2*(mu/b2);break;
case '-':zi=a1*(mu/b1)-a2*(mu/b2);break;
}
int temp=__gcd(abs(zi),mu);
zi/=temp;
mu/=temp;
int d=(zi/mu);
zi-=d*mu;
printf("%d[%d/%d]%c%d[%d/%d]=",d1,a1,b1,c,d2,a2,b2);
if(d==0) cout<<zi/mu<<endl;
else if(zi!=0)
cout<<d<<'['<<zi<<'/'<<mu<<']'<<endl;
else cout<<0<<endl;
}
return 0;
}