LightProb




題目描述 :

有n盞燈,編號為1~n,第1個人把所有燈打開,第2個人按下所有編號為2的倍數的開關(這些燈將被關掉),第3個人按下所有編號為3的倍數的開關(其中關掉的燈被打開, 開著燈將被關閉),
依此類推。一共有k個人,問最後有哪些燈開著?( k <=n <=1000)


input

7  3

output

1  5  6  7




#include<stdio.h>
#include<string.h>
#define maxn 1010
int a[maxn];

int main()
{
 int n, k, first = 1;
 memset(a, 0, sizeof(a));
 scanf_s("%d%d", &n, &k);
 for (int i = 1; i <= k; i++)
  for (int j = 1; j <= n; j++)
   if (j%i == 0)a[j] = !a[j];

        for (int i = 1; i <= n; i++)
  if (a[i]){ if (first)first = 0; else printf(" "); printf("%d", i); }

        printf("\n");
 return 0;
}