开关灯问题揭秘:巧用数学解 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]
相关提问
- C++ 代码:巧妙计算 n×n 矩阵行、列、对角线平行直线元素和最大值(字节豆包 | 1151点数解答 | 2025-11-26 20:07:49)53
- 班级分组难题:如何算出最大管理方便度之和?(字节豆包 | 176点数解答 | 2025-12-13 11:17:22)37
- Cpp解决老六考验:计算删除数字后拼接整数之和(字节豆包 | 388点数解答 | 2026-03-28 12:54:19)23
- 优化代码解决组合数计算超时问题(字节豆包 | 810点数解答 | 2026-05-31 15:28:14)16
- 优化代码解决组合数计算WA问题(字节豆包 | 810点数解答 | 2026-05-31 15:31:34)20
- 解决代码WA问题:修改组合数计算及消除重复排列逻辑(字节豆包 | 821点数解答 | 2026-05-31 15:32:57)15
- 修改后的组合数计算代码解决WA问题(字节豆包 | 1016点数解答 | 2026-05-31 15:34:47)17
- Java实现Student类:计算三门课程总分、平均分、最高分与最低分( | 2332点数解答 | 2024-03-12 10:23:27)287
- Python代码实现创建并写入成绩信息到 scores.txt 文件( | 342点数解答 | 2024-04-21 15:53:03)374
- Python实现:输入学生数量计算各科成绩平均分、标准差与中位数(讯飞星火 | 715点数解答 | 2024-05-08 11:20:09)358
- 上海海洋大学yqhyzy:Python实现学生各科成绩统计值计算,含随机生成与精准输出! ( | 1398点数解答 | 2024-05-08 11:21:34)353
- 上海海洋大学yqhyzy:输入学生数算语数外成绩平均分、标准差与中位数( | 699点数解答 | 2024-05-08 11:24:39)339