杭电(hdu)ACM 2503 a/b + c/d
2015-08-06 16:40
387 查看
a/b + c/d
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10124 Accepted Submission(s): 5669
[align=left]Problem Description[/align]
给你2个分数,求他们的和,并要求和为最简形式。
[align=left]Input[/align]
输入首先包含一个正整数T(T<=1000),表示有T组测试数据,然后是T行数据,每行包含四个正整数a,b,c,d(0<a,b,c,d<1000),表示两个分数a/b 和 c/d。
[align=left]Output[/align]
对于每组测试数据,输出两个整数e和f,表示a/b + c/d的最简化结果是e/f,每组输出占一行。
[align=left]Sample Input[/align]
2 1 2 1 3 4 3 2 3
[align=left]Sample Output[/align]
5 6 2 1[code]#include <iostream> #include <string> using namespace std; int com1(int x,int y)//最小公倍数 { int r=1; int xx;int yy; xx=x;yy=y; while(r!=0) { r=x%y; x=y; y=r; } return (xx*yy)/x; } int com2(int x,int y)//最大公约数 { int r=1; int xx;int yy; xx=x;yy=y; while(r!=0) { r=x%y; x=y; y=r; } return x; } int main() { int T,a,b,c,d,e,f,q; cin>>T; while(T--) { cin>>a>>b>>c>>d; if(b==d) { e=a+c; f=b; if(com2(e,f)==1) cout<<e<<" "<<f<<endl; else cout<<e/com2(e,f)<<" "<<f/com2(e,f)<<endl; } if(b!=d) { q=com1(b,d); e=q/b*a+q/d*c; f=q; if(com2(e,f)==1) cout<<e<<" "<<f<<endl; else cout<<e/com2(e,f)<<" "<<f/com2(e,f)<<endl; } } return 0; }
[/code]
相关文章推荐
- LeetCode(15) 3Sum
- 深入理解计算机操作系统——第3章:程序编码,过程调用(程序栈)
- Walking Ant(一道有意思的蚂蚁游戏,bfs)
- LeakCanary: 让内存泄露无所遁形
- LeakCanary: 让内存泄露无所遁形
- 2015.7.31第十六课 sql2(约束、日期、isnull、case、exists、cast\convert、索引、视图、存储过程、触发器、备份与还原)
- Redis3 集群功能配置初尝
- 08-1. 求一批整数中出现最多的个位数字(20)
- thinkphp的I方法
- RunLoop学习笔记,从CF层面了解由于CFRunLoopMode机制iOS程序ScrollView的滑动为何如此平滑的原因。还有介绍AFNetworking如何单独发起一个global threa
- The method getTextContent() is undefined for the type Element
- ueditor编辑器使用
- visual studio运行时库MT、MTd、MD、MDd的研究
- 标记语言之Html学习
- SylixOS动态加载器系列文章(6) C++支持
- 查找字符
- thinkphp跳转和重定向
- 欢迎使用CSDN-markdown编辑器
- thinkphp判断请求类型
- 截取指定长度的字符内容