南阳 分数加减法
2015-03-14 21:53
218 查看
http://acm.nyist.net/JudgeOnline/problem.php?pid=111
#include<stdio.h> //求最大公约数 int Gcd(int a,int b) { int temp; if(a>b) { temp=b; b=a; a=temp; } while(b!=0) { temp=a%b; a=b; b=temp; } if(a>0) return a; else //因为可能为负的 return -a; } int main() { int a,b,c,d; char ch; int temp1,temp2,temp; while(~scanf("%d/%d%c%d/%d",&a,&b,&ch,&c,&d)) { if(ch=='+') { temp2=b*d; temp1=a*d+c*b; if(temp1==0) //这里要考虑分子是不是为零 ,如果为零,下面就没意义了 { printf("0\n"); continue; } temp=Gcd(temp1,temp2); temp1/=temp; temp2/=temp; if(temp1%temp2==0) //这里要注意分子整除分母时的情况 printf("%d\n",temp1/temp2); else printf("%d/%d\n",temp1,temp2); } if(ch=='-') { temp2=b*d; temp1=a*d-c*b; if(temp1==0) { printf("0\n"); continue; } temp=Gcd(temp1,temp2); temp1/=temp; temp2/=temp; if(temp1%temp2==0) printf("%d\n",temp1/temp2); else printf("%d/%d\n",temp1,temp2); } } return 0; }