开关灯

来源:互联网 发布:火车购票软件哪款好用 编辑:程序博客网 时间:2024/04/27 19:56

1.        一共有N盏灯,编号1——N,第一个人把所有的灯打开,第二个人将所有编号为2 的倍数的灯关掉,第三个人按下所有编号为3的倍数的灯的开关,以此类推,共有K人。K<=N<=1000.输出最后开着的灯的编号(最后不能输出空格,直接换行)。

input:

7 3

output:

1 5 6 7

代码:

#include<iostream>

#include<memory.h>

#include<cmath>

using namespace std;

int main()

{

    int n,k;

    cin>>n>>k;

    boollight[n+1];//设置一个bool类型的数组

   memset(light,false,sizeof(light));//初始化为FALSE

    for(inti=1;i<=k;i++)

    {

        for(intj=1;j<=n;j++)

        {

           if(!fmod(j,i))

            {

               light[j]=!light[j];//开关一次变一次布尔值

            }

        }

    }

int check=0;

/*判断要输出的元素是否为第一个,若为第一个,只输出该数字,不为第一个,先输出空格,再输出数字.若先输出数字再输出空格,无法预先知道一共要输出多少个元素,也就无法控制最后不输出空格.*/

    for(inti=0;i<=n;i++)

    {

       if(light[i])

        {

           if(check==0)

            {

                cout<<i;

               check++;

            }

            else

            {

               cout<<" "<<i;

            }

        }

    }

    return 0;

}

 

0 0
原创粉丝点击