31:开关灯
原題鏈接
總時(shí)間限制:?假設(shè)有N盞燈(N為不大于5000的正整數(shù)),從1到N按順序依次編號(hào),初始時(shí)全部處于開啟狀態(tài);有M個(gè)人(M為不大于N的正整數(shù))也從1到M依次編號(hào)。
第一個(gè)人(1號(hào))將燈全部關(guān)閉,第二個(gè)人(2號(hào))將編號(hào)為2的倍數(shù)的燈打開,第三個(gè)人(3號(hào))將編號(hào)為3的倍數(shù)的燈做相反處理(即,將打開的燈關(guān)閉,將關(guān)閉的燈打開)。依照編號(hào)遞增順序,以后的人都和3號(hào)一樣,將凡是自己編號(hào)倍數(shù)的燈做相反處理。
請(qǐng)問(wèn):當(dāng)?shù)贛個(gè)人操作之后,哪幾盞燈是關(guān)閉的,按從小到大輸出其編號(hào),其間用逗號(hào)間隔。
源碼
#include <iostream> using namespace std; int main() {int N, M, i, j, index=0;bool on[5001]; // 記錄燈的開關(guān)狀態(tài)cin >> N >> M;for (i=0; i<5001; i++) on[i] = false; // 第1人for (i=2; i<=M; i++){ // 從第2個(gè)人開始模擬for (j=i; j<=N; j+=i){on[j] = !on[j];}}for (i=1; i<=N; i++){if (!on[i]){if (index == 0) cout << i;else cout << "," << i;index++;}}cout << endl;return 0; }
總結(jié)
- 上一篇: python在线代码编辑器-5种最佳Py
- 下一篇: 决策树实现鸢尾花分类