[藍橋杯] 第五屆藍橋杯總決賽 - 燈泡問題

題目大意是說,給你n個燈泡,初始時都是燈滅的狀態。

第一次挑選序號爲2、4、6。。。的燈泡並撥動一次開關,也就是亮變滅,滅變亮。

然後挑選序號爲3、6、9.。。。的燈泡撥動一次開關。

然後是4、8、12.。。。

一直到 n。

每次輸入三個數 N L R,表示N個燈泡,問從序號L到序號R中有幾個燈泡是亮的(1 <= L,R <= 10^15)。

例如:5 2 3輸出3,因爲撥動開關後的狀態是:

 1   2  3   4   5

滅 亮 亮 滅 亮

我們寫出20個燈泡的最終狀態:可以發現1、4、9、16的燈泡不亮,其他都亮,很容易看出來平方數是不亮的,其他數都是亮的。

問題在於數據量是10^15,不能蠻力計算平方數的個數。有個相當簡單的辦法,開個根號就行了

[L, R]的平方數數量=根號(R) - 根號(L-1)

那麼答案就是R - L + 1 - 根號(R) + 根號(L-1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章