View Code of Problem 3494

#include<stdio.h>
#include<math.h>
int gys(int a,int b){
	if(a>b)
	{
	 int t=a;
	 a=b;
	 b=t;	
	}
	for(int i=a;i>0;i--)
	if(a%i==0&&b%i==0)
		return i;
}
int main(){
	int a,b,c,d;
	char ch,str;
	int num[2];
	while(scanf("%d/%d%c%d/%d",&a,&b,&ch,&c,&d)!=EOF){
		str='0';
		if(b!=d){
			int t=b*d; 
			num[0]=t;
			int k1=t/b*a,k2=t/d*c;
			if(ch=='+'){
				num[1]=k1+k2;
			}
			else{
				int k=k1-k2;
				if(k<0)
				str='-';
				num[1]=abs(k);
			}
		}
		else {
			num[0]=b;
			if(ch=='+'){
				num[1]=a+c;
			}
			else{
				int k=a-c;
				if(k<0)
				str='-';
				num[1]=abs(k);
			}
		}
		if(str=='-')
	    printf("-");
		if(num[1]==0)
		printf("0\n");
		else if(num[1]==num[0])
		printf("1\n");
		else if(num[1]%num[0]==0){
			printf("%d\n",num[1]/num[0]);
		} 
		else{
	int t=gys(num[0],num[1]);
    printf("%d/%d\n",num[1]/t,num[0]/t);	
	}
}
} 

Double click to view unformatted code.


Back to problem 3494