题目:
有n盏灯,编号为1-n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依次类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k <= n<= 1000。
样例输入:73
样例输出:15 6 7
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n = 1000;
int k = 0;
printf("Plese enter n,K:");
scanf("%d%d", &n, &k);
int *a = (int *)malloc(n*4 + 4);
memset(a, 0, n*4 + 4);
for (int i =1; i <= k; i++)
{
for (int j = i; j <= n; j++)
{
if(j%i == 0)
a[j] = 1 - a[j];
}
}
printf("the ruult:");
for (int i = 1; i <= n; i++)
{
if(a[i])
printf("%4d", i);
}
printf("\n");
return 0;
}