1、开灯问题:
有n盏灯,编号为1~n。第一个人把所有灯打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),一次类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯的编号以及数目。k<= n <=1000;
方法一:采用数组清零,然后改变数组值,1表示灯亮,0表示灯灭。
<span style="font-size:18px;">#include <stdio.h>
#include <string.h>
#define MAXN 65535
int a[MAXN];//在函数体外定义一个大的数组
int main(void)
{
int i, j, k, n, count = 0;
memset(a, 0, sizeof(a));//把数组a清零,它在string.h中定义
scanf("%d%d", &n, &k);//输入灯的数目n,以及人数k
for(i = 1; i <=k; i++)//人员编号
for(j = 1; j<= n; j+