Least Common Multiple Ⅰ
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
求n个数的最小公倍数。
输入
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
输出
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
示例输入
2 4 6 3 2 5 7
示例输出
12 70
说思路:对于给定的N个数,想办法把最大的那个找出来(我排序找的。。),然后令res=max(),开循环遍历这N个数,每当res%a[i]!=0 时,令res++,直至res能整除所有的数。此时res的值就是最小公倍数。
#include <iostream> //最大公倍数 #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; bool cmp(int x,int y) { return x>y; } int main() { int flag,res,n,i,a[10001]; while(cin>>n) { for(i=0;i<n;i++) cin>>a[i]; sort(a,a+n,cmp); //找出最大数 res=a[0];flag=1; while(flag) //对于这些数一个个的判定,直至res能整除所以数,否则res++ { for(i=0,flag=0;i<n;i++) if(res%a[i]!=0) {flag=1;res++;} } cout<<res<<endl; } return 0; }