南阳理工ACM-OJ 分数加减法 最大公约数的使用
来源:互联网 发布:网络安全工程师专业 编辑:程序博客网 时间:2024/06/05 10:48
http://acm.nyist.net/JudgeOnline/problem.php?pid=111
简单模拟:
#include <iostream>#include <string>#include <cstring>using namespace std;int gcd(int a,int b){if(a<b)return gcd(b,a);if(b==0)return a;return gcd(b,a%b);}int lcm(int a,int b){return a*b/gcd(a,b);}int main(){string s;int fz1,fm1,fz2,fm2;char ch;while(cin>>s){fz1=s[0]-'0';fm1=s[2]-'0';fz2=s[4]-'0';fm2=s[6]-'0';ch=s[3];int fm=lcm(fm1,fm2);fz1=fz1*(fm/fm1);fz2=fz2*(fm/fm2);int fz;if(ch=='+'){fz=fz1+fz2;if(fz%fm==0){cout<<fz/fm<<endl;continue;}// 2/1或者4/2这种情况应该直接输出 int tmp=gcd(fz,fm);fz=fz/tmp;fm=fm/tmp;if(fz==fm)cout<<1<<endl;else cout<<fz<<"/"<<fm<<endl;}else {fz=fz1-fz2;if(fz%fm==0){cout<<fz/fm<<endl;continue;}if(fz==0)cout<<0<<endl;else {int tmp;if(fz<0)tmp=gcd(-fz,fm);else tmp=gcd(fz,fm);fz=fz/tmp;fm=fm/tmp;if(fz==fm)cout<<1<<endl; // 1/1这种情况应该输出1 else cout<<fz<<"/"<<fm<<endl;}}}return 0;}
- 南阳理工ACM-OJ 分数加减法 最大公约数的使用
- 南阳理工ACM 111分数加减法
- 南阳理工:分数加减法
- C语言 南阳理工ACM 111.分数加减法
- 南阳理工111---分数加减法
- 南阳oj 题目111 分数加减法
- 南阳OJ 题目111:分数加减法
- ACM--南阳理工OJ-88题-汉诺塔
- 南阳-111-分数加减法
- 南阳 分数加减法
- 南阳理工:分数拆分
- 南阳理工556 最大公约数
- ACM思维题~~分数的加减法
- 分数加减法(南阳111)
- 南阳题目111-分数加减法
- Acm 111 分数加减法
- NYOJ-ACM-分数加减法
- 南阳理工ACM之矩形的个数
- Book Pile sgu271
- 如何下载coursera视频
- ubuntu root密码
- 镜像文件
- Book 书架 Zjoi2006
- 南阳理工ACM-OJ 分数加减法 最大公约数的使用
- 【心得】2013年7月7日
- 20130707 hdu4565 So Easy! 数学头脑+矩阵快速幂
- Hadoop 参数配置优化
- android如何建立数据库。(如何重写SQLiteOpenHelper)
- 光驱与虚拟光驱
- 黑马程序员--网络编程
- 长路拖累你的心
- 2013 - ECJTU 暑期12级训练赛第一场-problem-E