(HDU)1019 --Least Common Multiple(最小公倍数)
生活随笔
收集整理的這篇文章主要介紹了
(HDU)1019 --Least Common Multiple(最小公倍数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
一組正整數的最小公倍數(LCM)是可以被集合中所有數字整除的最小正整數。 例如,5,7和15的LCM為105。輸入
輸入將包含多個問題實例。 輸入的第一行將包含指明問題實例數量的單個整數。 每個實例將由形式為m n1 n2 n3 ... nm的單行組成,其中m是集合中的整數數目,n1 ... nm是整數。 所有整數將為正,位于32位整數的范圍內。輸出
對于每個問題實例,輸出包含相應LCM的單行。 所有結果將位于32位整數的范圍內。樣例輸入
2
3 5 7 15
6 4 10296 936 1287 792 1
樣例輸出
105
10296 查看問題
求最小公倍數問題,一個蠢辦法是從第一個開始一個個試:
1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 int main() 7 { 8 9 int n,m,a,k; 10 while(scanf("%d",&n)!=EOF&&n) 11 { 12 while(n--) 13 { 14 scanf("%d",&m); 15 int t=1; 16 while(m--) 17 { 18 int i=2; 19 scanf("%d",&a); 20 k=a; 21 while(a%t!=0) 22 { 23 a=k*i; 24 i++; 25 } 26 t=a; 27 } 28 printf("%d\n",a); 29 } 30 } 31 return 0; 32 } 暴力法這題可以找出里面最大的正整數,再進行翻倍找最小公倍數。
1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 int main() 7 { 8 int t,n,i,num[100010]; 9 while(~scanf("%d",&t)&& t) 10 { 11 while(t--) 12 { 13 int lcm,max_num=0; 14 scanf("%d",&n); 15 for(i=1;i<=n;i++) 16 { 17 scanf("%d",&num[i]); 18 if(num[i]>max_num) max_num=num[i]; 19 } 20 21 lcm=max_num; 22 for(i=1;i<=n;i++) 23 while(lcm%num[i]!=0) 24 lcm+=max_num; 25 printf("%d\n",lcm); 26 } 27 } 28 return 0; 29 } 代碼(有問題)不過這個代碼提交似乎會WA,目前原因未知。
轉載于:https://www.cnblogs.com/ACDoge/p/6125498.html
總結
以上是生活随笔為你收集整理的(HDU)1019 --Least Common Multiple(最小公倍数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dex2jar官网和jdgui官网链接
- 下一篇: 图的存储--十字链表