題目 開燈關燈問題

2022-02-24 04:38:59 字數 3236 閱讀 5957

有n(n>0)盞燈,編號為1~n,在桌子上排成一排。開始都是熄滅狀態。

第1趟,按下編號為1 的倍數的 燈的開關。(第一趟後所有的燈都亮了)

第2趟,按下編號為2 的倍數的 燈的開關。

第 i 趟,按下編號為i 的倍數的 燈的開關。

一直到第n趟,結束。

:n趟過後,哪些燈亮著,哪些熄滅,有多少亮著?

根據問題,很直接的寫出**。

#include#include

#include

using

namespace

std;

void

onoff(size_t n)

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

delete

door;

}int

main()

return0;

}

執行結果

n=1

1n=210

n=3100

n=4100

1n=510

010n=610

0100

n=7100

1000

n=8100

1000

0n=910

0100

001n=1010

0100

0010

n=1110

0100

0010

0n=1210

0100

0010

00n=1310

0100

0010

000n=1410

0100

0010

0000

n=1510

0100

0010

0000

0n=1610

0100

0010

0000

01n=1710

0100

0010

0000

010n=1810

0100

0010

0000

0100

n=1910

0100

0010

0000

0100

0n=2010

0100

0010

0000

0100

00n=2110

0100

0010

0000

0100

000n=2210

0100

0010

0000

0100

0000

n=2310

0100

0010

0000

0100

0000

0n=2410

0100

0010

0000

0100

0000

00n=2510

0100

0010

0000

0100

0000

001n=2610

0100

0010

0000

0100

0000

0010

n=2710

0100

0010

0000

0100

0000

0010

0n=2810

0100

0010

0000

0100

0000

0010

00n=2910

0100

0010

0000

0100

0000

0010

000n=3010

0100

0010

0000

0100

0000

0010

0000

n=3110

0100

0010

0000

0100

0000

0010

0000

0n=3210

0100

0010

0000

0100

0000

0010

0000

00n=3310

0100

0010

0000

0100

0000

0010

0000

000n=3410

0100

0010

0000

0100

0000

0010

0000

0000

n=3510

0100

0010

0000

0100

0000

0010

0000

0000

0n=3610

0100

0010

0000

0100

0000

0010

0000

0000

01

仔細分析後,發現,被按偶數次的燈,最後是熄滅的,而被按奇數次的燈,最後是亮的。而且從執行結果中可以看出規律:最後亮的燈,其編號都是完全平方數。第1盞,第4盞,第9盞...

舉幾個例子。

7 = 1 x 7             編號為7,在第1 趟和第 7 趟被按下。

30 = 1 x 30        編號為30,在1,30 ,2, 15 , 3 , 10 趟都會被按下。

= 2 x 15

= 3 x 10

1 = 1 x 1             編號為1, 在第 1趟被按下

4 = 1 x 4            編號為4 , 在第1  4  2  趟被按下

= 2 x 2

可以發現,編號是完全平方數,就會被按奇數次。否則會按下偶數次。因此,這個題目轉而變為判斷哪些數是完全平方數了。

即:編號為完全平方數的燈,最後是亮的,否則就是熄滅的。

判斷乙個數是否是完全平方數(不考慮負數)

bool isperfectsquare(unsigned int

n)

開燈關燈問題

題目 大廳裡有100盞燈,每盞燈都編了號碼,分別為1 100。每盞燈由乙個開關來控制。開關按一下,燈亮,再按一下燈滅。開關的編號與被控制的燈相同。開始時,燈是全滅的。現在按照以下規則按動開關。第一次,將所有的燈點亮。第二次,將所有2的倍數的開關按一下。第三次,將所有3的倍數的開關按一下。以此類推。第...

開燈關燈問題

有編號1 100個燈泡,起初所有的燈都是滅的。有100個同學來按燈泡開關,如果燈是亮的,那麼按過開關之後,燈會滅掉。如果燈是滅的,按過開關之後燈會亮。現在開始按開關。第1個同學,把所有的燈泡開關都按一次 按開關燈的編號 1,2,3,100 第2個同學,隔乙個燈按一次 按開關燈的編號 2,4,6,10...

開燈關燈問題

有編號1 100個燈泡,起初所有的燈都是滅的。有100個同學來按燈泡開關,如果燈是亮的,那麼按過開關之後,燈會滅掉。如果燈是滅的,按過開關之後燈會亮。現在開始按開關。第1個同學,把所有的燈泡開關都按一次 按開關燈的編號 1,2,3,100 第2個同學,隔乙個燈按一次 按開關燈的編號 2,4,6,10...