南阳oj 开灯问题

#include<iostream>
using namespace std;
int main ()
{
int n,k;
cin>>n>>k;
int book[1005];
for(int i=1;i<=n;i++)
book[i]=1;
for(int j=2;j<=k;j++)
{
int a=1;
int num=j;
while(num<=n)
{
if(book[num]==1){
book[num]=0;
//cout<<num<<" "<<book[num]<<endl;
}
else if(book[num]==0)
{
book[num]=1;
// cout<<num<<" "<<book[num]<<endl;
}
a++;
num=a*j;
}
}
cout<<1;
for(int i=2;i<=n;i++)
{
if(book[i]==1)
cout<<" "<<i;
}
cout<<endl;
return 0;
}

定义一个标记数组,第一次循环,将所有的灯打开,即book设置为1

posted @ 2018-07-25 11:38  换牙  阅读(82)  评论(0编辑  收藏  举报