跟句題目敘述,文文走到第 i 趟時,會撥動編號為 𝑖 的倍數的街燈開關,所以只要把每次走過的情況列出來,最後再去數有多少盞燈是亮的即為答案。
第 1 2 3 4 5 6 7 8 9 ............. 盞燈
第一次 O O O O O O O O O
第二次 O X O X O X O X O
...............
第九次 O X X O X X X X O
...............
這樣就已經能看出規律了,亮一個燈,後面暗的燈會多兩個,如果還不相信那就繼續往下列。
(怕會列太久,所以說個列快一點的方法,該數字有奇數個因數,最後就會亮。eg: 1 = 1. 9 = 1, 3, 9. 16 = 1, 2, 4, 8, 16. 25= 1, 5, 25 )
---------------------以下為程式碼---------------------
#include <iostream>
using namespace std;
int main()
{
int N;
while (cin >> N)
{
long long int streetlight;
int i = 0, j = 2;
while (streetlight < N)
{
streetlight = streetlight + 1;
streetlight = streetlight + j;
i = i + 1;
j = j + 2;
}
cout << i << endl;
}
}