開燈問題
- 描述
-
有n盞燈,編號爲1~n,第1個人把所有燈打開,第2個人按下所有編號爲2 的倍數的開關(這些燈將被關掉),第3 個人按下所有編號爲3的倍數的開關(其中關掉的燈將被打開,開着的燈將被關閉),依此類推。一共有k個人,問最後有哪些燈開着?輸入:n和k,輸出開着的燈編號。k≤n≤1000
- 輸入
- 輸入一組數據:n和k
- 輸出
- 輸出開着的燈編號
- 樣例輸入
-
7 3
- 樣例輸出
-
1 5 6 7
-
#include <stdio.h> #define M 100 int main() { int a[M][2]; int n, i, k, j; scanf("%d%d", &n, &k); getchar(); for(i = 1; i <= n; i++) { a[i][0] = i; a[i][1] = 1; } for(i = 2; i <= n; i++) for(j = 2; j <= k; j++ ) if( a[i][0] % j == 0) { if(a[i][1] == 1) a[i][1] = 0; else if(a[i][1] == 0) a[i][1] = 1; } for(i = 1; i <= n; i++) { if(a[i][1] == 1) printf("%d ", a[i][0]); } printf("\n"); return 0; }