開關燈問題

2021-07-27 09:53:21 字數 1195 閱讀 4552

題目描述

有若干隻燈排成一排。所有的燈開始的時候都是關閉的,現對這些燈進行一系列的操作。在第

i次操作的時候,調整所有編號是

i的倍數的燈的狀態

(原本開啟的燈將它關閉,原本關閉的將它開啟)。

輸入

每組測試資料佔一行,包含乙個整數

n( 0 < n <= 10^5)

輸出

經過無限次操作之後,第

n隻燈的狀態(

0表示關,

1表示開)

樣例輸入

1

5樣例輸出

1

0思路:

開乙個10^5的陣列,用來表示一排燈

用memset函式將陣列全部元素置0;

問題重點在第n隻燈的狀態(0表示關,1表示開)

所以只需設定1個計數變數

然後用for迴圈對n以內的數進行判斷

結束迴圈後判斷計數變數為奇數還是偶數

再輸入即可。

**如下:

#include#includeusing namespace std;

#define maxn 100000

int a[maxn];

int main()

if(cnt%2==0)cout << 0 << endl;

elsecout << 1 << endl;

}return0;

}

還有1個類似的問題:

n盞燈,第乙個人把所有的燈開啟,第n個按下所有編號為n的倍數的開關(其中關掉的燈將被開啟,開著的燈將被關閉)。共k個人,問最後有哪些燈開著。輸入n和k,

k小於等於n小於等於1000

**如下:

#include#include#includeusing namespacestd;

#define maxn1010

int a[maxn];

int main()

}for (int i = 1; i <= n; i++)

}cout << '\n';

return 0;

}

開關燈問題

描述 一條長廊裡依次裝有n 1 n 65535 盞電燈,從頭到尾編號1 2 3 n 1 n。每盞電燈由乙個拉線開關控制。開始,電燈全部關著。有n個學生從長廊穿過。第乙個學生把號碼凡是1的倍數的電燈的開關拉一下 接著第二個學生把號碼凡是2的倍數的電燈的開關拉一下 接著第三個學生把號碼凡是3的倍數的電燈...

OJ開關燈問題

將n個燈泡編成n號,即1,2,3,n。現有n個人去拉開關,第乙個人把1的倍數的燈號開關都拉一下,第二個人把2的倍數的燈號都拉一下,第三個人把3的倍數的燈號都拉一下,直到第n個人將第n號燈泡拉一下。假定開始時,燈泡全不亮,請問 這n個人全拉完後,有多少個燈泡是亮的?輸入乙個整數n 1 n 100000...

開關燈問題 BulbSwitch

2018 06 17 11 54 51 開關電燈問題是乙個比較經典的趣味數學題,本文中主要介紹其中的一些常見情況。一 bulb switch 問題描述 問題求解 初始狀態 off,off,off,off.step 1 on,on,on,on step 2 on,off,on,對於第 i 盞燈,其在s...