題目大意是說,給你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)