#include <stdio.h> int find(int a,int b){ int m = a,n = b; int c; while(n){ c = m%n; m = n; n = c; } //printf("%d\n",a*b/m); return a*b/m; } int yinshu(int a,int b){ int c; while(b){ c=a%b; a = b; b = c; } //printf("%d\n",a); return a; } int main() { int a,b,c,d; char str; while(scanf("%d/%d%c%d/%d",&a,&b,&str,&c,&d) != EOF){ if(b == d){ if(a == c&&str == '-'){ printf("0\n"); } if(a != c&&str == '-'){ if((a-c) == b){ printf("%d\n",(a-c)/b); } else{ int t = yinshu(a-c,b); printf("%d/%d\n",(a-c)/t,b/t); } } if(str == '+'){ if((a+c) == d){ printf("%d\n",(a+c)/d); } else{ int t = yinshu(a+c,d); //printf("%d\n",t); printf("%d/%d\n",(a+c)/t,b/t); } } } else{ int n,m; if(str == '-'){ m = find(b,d); int k,i; k = m/b; i = m/d; //printf("%d %d\n",k,i); n = a*k-c*i; //printf("%d\n",n); } if(str == '+'){ m = find(b,d); int k,i; k = m/b; i = m/d; n = a*i+d*k; }int t; if(n < 0){ t = yinshu(-n,m); }else{ t = yinshu(n,m); } printf("%d/%d\n",n/t,m/t); } } return 0; } |
Double click to view unformatted code.