HDU 1019 Least Common Multiple
2015-07-22 10:13
267 查看
Problem Description
The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set. For example, the LCM of 5, 7 and 15 is 105.
Input
Input will consist of multiple problem instances. The first line of the input will contain a single integer indicating the number of problem instances. Each instance will consist of a single line of the form m n1 n2 n3 ... nm where m is the number of integers
in the set and n1 ... nm are the integers. All integers will be positive and lie within the range of a 32-bit integer.
Output
For each problem instance, output a single line containing the corresponding LCM. All results will lie in the range of a 32-bit integer.
Sample Input
Sample Output
第二个代码错主要是因为返回最小公倍数时两数相乘再除以最大公约数,这种情况可能会溢出,超过int的范围,所以要先用一个数除以最大公约数再乘另一个数
The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set. For example, the LCM of 5, 7 and 15 is 105.
Input
Input will consist of multiple problem instances. The first line of the input will contain a single integer indicating the number of problem instances. Each instance will consist of a single line of the form m n1 n2 n3 ... nm where m is the number of integers
in the set and n1 ... nm are the integers. All integers will be positive and lie within the range of a 32-bit integer.
Output
For each problem instance, output a single line containing the corresponding LCM. All results will lie in the range of a 32-bit integer.
Sample Input
2 3 5 7 15 6 4 10296 936 1287 792 1
Sample Output
105 10296 求m个数的最小公倍数 //AC #include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #include<string> using namespace std; int s(int a,int b) //最小公倍数 { if(a<b) { int t=a; a=b; b=t; } int n=a,m=b; while(b) { int t=a%b; a=b; b=t; } return n/a*m; } int main() { int a,b,n,m; cin>>n; while(n--) { cin>>m; cin>>a; for(int i=1; i<m; i++) { cin>>b; a=s(a,b); } cout<<a<<endl; } } //Wrong Answer #include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #include<string> using namespace std; int s(int a,int b) { if(a<b) { int t=a; a=b; b=t; } int p=a*b; while(b) { int t=a%b; a=b; b=t; } return p/a; } int main() { int a,b,n,m; cin>>n; while(n--) { cin>>m; if(m) cin>>a; for(int i=1;i<m;i++) { cin>>b; a=s(a,b); } cout<<a<<endl; } }注意:
第二个代码错主要是因为返回最小公倍数时两数相乘再除以最大公约数,这种情况可能会溢出,超过int的范围,所以要先用一个数除以最大公约数再乘另一个数
相关文章推荐
- Objective_C中常见的集合类
- 杭电oj 1002
- android 自定义控件属性步骤
- 关于Resources.Load()和 AssetBundle.Load()
- Android Broadcast、content porvider和AIDL的区别和场景
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- windows驱动开发
- CENTOS6.3 配置防火墙,开启80端口、3306端口
- JS获取CSS属性值
- HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good
- Scala学习资料
- MVC4过滤器(转)
- 【一天一个canvas】制作渐变式PPT背景(十五)
- 上传、音频、视频
- 第k小数
- 模板模式和策略模式的区别【转】
- Sliding Window Maximum
- 接入微信SDK64位包报错
- Linux 制作和打补丁
- 我的一些简单的shell脚本实例