題目連結
題意:
有個工人在有 n 個燈泡的走廊巡邏
他總共會巡邏 n 次
已知燈泡編號 1 ~ n
第 i 次巡邏會將編號 i 倍數的所有燈泡按下
(若燈泡每次按下就是開、關切換)
假設一開始燈泡都是暗的
若巡邏完後,最後一個燈泡是亮的,輸出 yes
反之,輸出 no
舉例來說,假設 n = 4,一開始全暗
第 1 次巡邏,按下 1 2 3 4,此時全亮
第 2 次巡邏,按下 2 4,此時1 3亮
第 3 次巡邏,按下 3,此時1亮
第 4 次巡邏,按下 4,此時1 4亮
最終 4 是亮的,輸出yes
解法:
這題難在題意XD
看得懂就是水題了
題目只問編號 n 的燈泡,其他不用關心
以上述例子來說
會影響到 4 的就是 1 2 4,也就是 4 的因數
要使最後結果為亮,因數個數必為奇數
只有當 n 為完全平方數才符合(因數: 1, 平方根 & 自己)
所以理解後就是判斷 n 是否為平方根即可
以我的作法來說,我用 Math.sqrt( ) (求某數的平方根)
只有 n 為完全平方數時,回傳值才為整數
若否, % 1 後結果就不為 0
程式(Java):
題意:
有個工人在有 n 個燈泡的走廊巡邏
他總共會巡邏 n 次
已知燈泡編號 1 ~ n
第 i 次巡邏會將編號 i 倍數的所有燈泡按下
(若燈泡每次按下就是開、關切換)
假設一開始燈泡都是暗的
若巡邏完後,最後一個燈泡是亮的,輸出 yes
反之,輸出 no
舉例來說,假設 n = 4,一開始全暗
第 1 次巡邏,按下 1 2 3 4,此時全亮
第 2 次巡邏,按下 2 4,此時1 3亮
第 3 次巡邏,按下 3,此時1亮
第 4 次巡邏,按下 4,此時1 4亮
最終 4 是亮的,輸出yes
解法:
這題難在題意XD
看得懂就是水題了
題目只問編號 n 的燈泡,其他不用關心
以上述例子來說
會影響到 4 的就是 1 2 4,也就是 4 的因數
要使最後結果為亮,因數個數必為奇數
只有當 n 為完全平方數才符合(因數: 1, 平方根 & 自己)
所以理解後就是判斷 n 是否為平方根即可
以我的作法來說,我用 Math.sqrt( ) (求某數的平方根)
只有 n 為完全平方數時,回傳值才為整數
若否, % 1 後結果就不為 0
程式(Java):
留言
張貼留言