ACM 分数加减法
分数加减法
时间限制:3000 ms | 内存限制:65535 KB
难度:2
- 描述
- 编写一个C程序,实现两个分数的加减法
- 输入
- 输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。
数据以EOF结束
输入数据保证合法 - 输出
- 对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数 - 样例输入
-
1/8+3/8 1/4-1/2 1/3-1/3
- 样例输出
-
1/2 -1/4 0
特别注意2/1+4/1这种整除的情况#include <iostream> #include <string> #include <algorithm> using namespace std; int gcd(int a,int b){ if(a < 0) a = -a; if(a < b) swap(a,b); while(b){ int t = b; b = a%b; a = t; } return a; } int main(){ string str; while(cin>>str){ int a = str[0]-'0', b = str[2]-'0', c=str[4]-'0', d=str[6]-'0'; int numerator = a*d+c*b,denominator=d*b; if(str[3] == '-') numerator = a*d-c*b; int v = gcd(numerator,denominator); numerator /=v; denominator /=v; if(numerator == 0) cout<<0<<endl; else if(denominator == 1) cout<<numerator<<endl; else cout<<numerator<<"/"<<denominator<<endl; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步