View Code of Problem 3494

#include <stdio.h>

int gcd(int a,int b){
  int i,max;
  for(i=1;i<=a&&i<=b;i++){
    if(a%i==0&&b%i==0){
      max=i;
    }
  }
  return max;
}

int main(){
  int a,b,c,d;
  char x;
  while(scanf("%d/%d%c%d/%d",&a,&b,&x,&c,&d)!=EOF){
    int a1=a*d,b1=b*d,c1=c*b,d1=d*b;
    int ansa,ansb,gcdd,flag;
    if(x=='+'){
      ansa=a1+c1;
      ansb=b1;
      gcdd=gcd(ansa,ansb);
      ansa/=gcdd;
      ansb/=gcdd;
    }else if(x=='-'){
      if(a1>c1){
        ansa=a1-c1;
        flag=1;
      }else{
        ansa=c1-a1;
        flag=0;
      }
      ansb=b1;
      gcdd=gcd(ansa,ansb);
      ansa/=gcdd;
      ansb/=gcdd;
    }
    if(ansa==0){
      printf("0\n");
    }else{
      if(flag==0){
        printf("-");
      }
      if(ansb==1){
          printf("%d\n",ansa);
      }else{
          printf("%d/%d\n",ansa,ansb);
      }
      
    }
  }
}
  

Double click to view unformatted code.


Back to problem 3494