2028 ACM Lowest Common Multiple Plus

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2028

思路:最一想到的就是暴力求解,从1开始一直到最后的答案,一直来除以给出的数列的数,直到余数为0;当然我们能升级,以输入的第一个数为初值,来除以数列,不行再进行翻倍操作,这样能减少循环的次数

开始用了break和continue ,最后发现复杂了。

复习哈C语言break continue

break:强行退出循环,不再执行本次循环,即跳出此循环 (CPU直接结束这一个循环,运行下面的代码)

continue:结束本次循环,执行下次循环,即终止该语句后面的语句,继续本次循环

如:

break:

for(i=1;i<=10;i++)

{
if(i=6)

break;
printf("%d ",i);

}
这个时候打印结果为:1 2 3 4 5 

continue:

for(i=1;i<=10;i++)

{
if(i=6)

continue;
printf("%d ",i);

}
打印结果为:1 2 3 4 5 7 8 9 10

Code:

#include <cstdio>
#include<iostream>

using namespace std;

int main()
{
    int n,num[10000],k;
    long long nn;
    while(cin>>n)
    {
        k=1;
        for(int i=1;i<=n;i++)
            cin>>num[i];
        nn=num[1];
            for(int j=2;j<=n;j++)
            {
                if(nn%num[j])
                {
                    nn+=num[1];
                    j=1;//必须重置为1
                }
            }
        cout<<nn<<endl;
}
    return 0;
}

 

posted @ 2018-09-25 22:33  CheeseIce  阅读(164)  评论(0编辑  收藏  举报