首页 > 代码库 > 分数加减法(POJ3979)
分数加减法(POJ3979)
分数加减法
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 12564 | Accepted: 4194 |
Description
编写一个C程序,实现两个分数的加减法
Input
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。
数据以EOF结束
输入数据保证合法
每行数据是一个字符串,格式是"a/boc/d"。
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。
数据以EOF结束
输入数据保证合法
Output
对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
Sample Input
1/8+3/8 1/4-1/2 1/3-1/3
Sample Output
1/2 -1/4 0
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int a,b,c,d,x,y,sum,k,t; char s; while(scanf("%d/%d%c%d/%d",&a,&b,&s,&c,&d)!=EOF) { if(s=='+') { x=a*d+b*c; y=b*d; k=x/gcd(x,y); t=y/gcd(x,y); if(t==1) printf("%d\n",k); else { printf("%d/%d\n",k,t); } } else { x=a*d-b*c; y=b*d; if(x==0) printf("0\n"); else{ k=x/gcd(x,y); t=y/gcd(x,y); if(t==1) printf("%d\n",k); else { if(x>0) printf("%d/%d\n",k,t); else printf("%d/%d\n",k*-1,t*-1);} } } } return 0; }
分数加减法(POJ3979)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。