開關燈簡單演算法

2021-10-23 04:08:13 字數 957 閱讀 7626

假設有n盞燈(n為不大於5000的正整數),從1到n按順序依次編號,初始時全部處於開啟狀態;有m個人(m為不大於n的正整數)也從1到m依次編號。

第乙個人(1號)將燈全部關閉,第二個人(2號)將編號為2的倍數的燈開啟,第三個人(3號)將編號為3的倍數的燈做相反處理(即將開啟的燈關閉,將關閉的燈開啟)。依照編號遞增順序,以後的人都和3號一樣,將凡是自己編號倍數的燈做相反處理。

請問:當第m個人操作之後,哪幾盞燈是關閉的,按從小到大輸出其編號,其間用逗號間隔。

輸入樣例

10

10

輸出樣例

1,4

,9

#include

#define l 5000

intmain()

for(

int i=

2;i<=m;i++)}

int count=0;

for(

int i=

1;i<=n;i++

)else

if(a[i]==0

&&count==1)

}return0;

}

知識說明:memset(a,0,sizeof(a)) 的作用是把陣列a清零。

為了避免輸出多餘空格,設定了乙個標誌變數first,可以表示當前要輸出的變數是否為第乙個,第乙個變數前不應該有逗號,其他變數都有。

#include

#include

using

namespace std;

const

int n=

5001

;int a[n]

;int

main()

}}

思想類似於素數的線性篩法:此題說明了素數的線性篩法

模擬開關燈

1 實驗任務 如圖4.2.1 所示,監視開關 k1 接在 p3.0 埠上 用發光二極體 l1 接在微控制器 p1.0 埠上 顯示開關狀態,如果開關合上,l1亮,開關開啟,l1熄滅。2 電路原理圖 圖4.2.1 3 系統板上硬體連線 1 把 微控制器系統 區域中的 p1.0 埠用導線連線到 八路發光二...

開關燈問題

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

開關燈問題

題目描述 有若干隻燈排成一排。所有的燈開始的時候都是關閉的,現對這些燈進行一系列的操作。在第 i次操作的時候,調整所有編號是 i的倍數的燈的狀態 原本開啟的燈將它關閉,原本關閉的將它開啟 輸入 每組測試資料佔一行,包含乙個整數 n 0 n 10 5 輸出 經過無限次操作之後,第 n隻燈的狀態 0表示...