题目大意是说,给你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)