题目: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; }