nyoj77开灯问题

来源:互联网 发布:反淘宝联盟 编辑:程序博客网 时间:2024/06/05 03:27

开灯问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:1
描述

有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000

输入
输入一组数据:n和k
输出
输出开着的灯编号
样例输入
7 3
样例输出
1 5 6 7
来源
经典算法
上传者
首席执行官

 


01.#include<stdio.h>
02.#include<string.h>
03.#define   MAXN    1000+10
04.int   a[MAXN];
05.int   main()
06.{
07.int   i,j,n,k,first=1;
08.memset(a,0,sizeof(a));
09.scanf("%d%d",&n,&k);
10.for(i=1;i<=k;i++)
11.for(j=1;j<=n;j++)
12.if(j%i==0)
13.a[j]=!a[j];
14.for(i=1;i<=n;i++)
15.if(a[i])
16.printf("%d ",i);
17.printf("\n");
18.return   0;
19.}