1/8+3/8 1/4-1/2 1/3-1/3
1/2 -1/4 0
#include<cstdio> #include<math.h> #include<algorithm> using namespace std; //不能用gcd递归gcd(int a,int b) a,b有可能小于0 int main() { int a,b,c,d,x,y,p; char o; while(~scanf("%d/%d%c%d/%d",&a,&b,&o,&c,&d)) { y=b*d; if(o=='+') x=a*d+b*c; else x=a*d-b*c; int p=max(x,y); for(int i=2;i<=sqrt(p);i++) { if(x%i==0&&y%i==0) { x/=i; y/=i; i=2; } //从2开始到他们的最大公约数成一个循环 } if(x==0||y==0) printf("0\n"); else if(y==1) printf("%d\n",x); else printf("%d/%d\n",x,y); } return 0; }
原文:http://blog.csdn.net/holyang_1013197377/article/details/39457313