酷代码 AI
菜单
服务商

开关灯问题揭秘:巧用数学解 1e9 规模难题

这个问题是经典的“开关灯”问题。每个灯作的次数等于其编号的因数个数。 灯最终状态由操作次数的奇偶性决定:奇数次操作灯亮,偶数次操作灯灭。 一个数有奇数个因数当且仅当它是完全平方数。 亮灯的编号就是所有不超过 n 的完全平方数。 它们的和就是: \[ \sum_{k=1}^{\lfloor \sqrt{n} \rfloor} k^2 \] 代码实现: ```python n = int(input()) k = int(n 0.5) ans = sum(i * i for i in range(1, k + 1)) print(ans) ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 当 n 很大时(最大 1e9),直接遍历 1 到 n 会超时,必须用数学方法。 2. 计算平方根取整时,注意浮点数精度问题,可以用 int(n 0.5) 或 math.isqrt(n)(Python 3.8+)。 3. 求和时使用公式或循环,注意数据范围,Python 整数不会溢出,但其他语言可能需要使用 long long 类型。 ######[AI写代码神器 | 271点数解答 | 2026-01-18 12:41:43]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]