[蓝桥杯] 第五届蓝桥杯总决赛 - 灯泡问题

9 篇文章 0 订阅

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值