//防止数据溢出先除再乘//辗转相除法求最大公约数最小公倍数------一I
2018-02-11 23:14
344 查看
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
解题思路:
辗转相除法先求最大公约数gcd(a,b)
最小公倍数lcm(a,b)=a*b/gcd(a,b)
为了防止数据溢出,先除再乘lcm(a,b)=a/gcd(a,b)*b
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
解题思路:
辗转相除法先求最大公约数gcd(a,b)
最小公倍数lcm(a,b)=a*b/gcd(a,b)
为了防止数据溢出,先除再乘lcm(a,b)=a/gcd(a,b)*b
#include<stdio.h> int gcd(int a,int b) { int temp; if(a<b) { temp=a; a=b; b=temp; } while(b!=0) { temp=a%b; a=b; b=temp; } return a; } int lcm(int a,int b) { int c; c=a/gcd(a,b)*b;//防止数据溢出,先除再乘 return c; } int main() { int total,m,result,num; scanf("%d",&total); for(int i=1;i<=total;i++) { scanf("%d%d",&m,&result); for(int j=2;j<=m;j++) { scanf("%d",&num); result=lcm(num,result); } printf("%d\n",result); } }
相关文章推荐
- C#数据结构-求最大公约数和最小公倍数[辗转相除法]
- jdbc底层驱动加载数据机制之防止内存溢出(2)--Mysql
- hibernate如何进行批量的数据操作,防止内存溢出
- 求最大公约数和最小公倍数,从文件输入数据,将结果输出到另外一个文件
- 辗转相除法求最大公约数和最小公倍数
- 辗转相除法求最大公约数和最小公倍数
- 用辗转相除法求最大公约数和最小公倍数 并用这求两个分数间的大小
- OpenCV学习--saturate_cast防止数据溢出
- 求最大公约数和最小公倍数(辗转相除法)
- 辗转相除法求两个数的最大公约数和最小公倍数
- OpenCV学习--saturate_cast防止数据溢出
- 辗转相除法:求最大公约数和最小公倍数
- 辗转相除法求最大公约数和最小公倍数
- 初学python:辗转相除法求两个数的最大公约数和最小公倍数
- 蓝桥杯-辗转相除法求最大公约数和最小公倍数、Eval函数
- 欧几里德算法(辗转相除法)求最大公约数和最小公倍数
- google面试题目:寻找丑数--使用double防止数据溢出
- 辗转相除法求最大公约数、最小公倍数
- 辗转相除法求最大公约数,最小公倍数。
- 【模版】素数筛, 最大公约数(辗转相除法),最小公倍数