CSP-J 入门级 · CSP 2026 入门级第一轮 第 6 题

选择题 · 答案 D · 考点:整数与整除、数论基础、计数原理

← 整套速查表 CSP-J 入门级 全部真题

题目

【单选】执行下列代码后 s 的值是( )。

int s = 0;
for (int i = 1; i <= 100; i++)
    if (i % 3 == 0 || i % 5 == 0)
        s += i;
答案:D

考点

整数与整除数论基础计数原理

解题思维

这是"容斥原理"求和:先分别算出 1~100 中所有 3 的倍数之和、5 的倍数之和,再减去被重复计算的 15 的倍数之和。等差数列求和公式 n(a₁+aₙ)/2 一步到位。

常见错误

只算 3 的倍数加 5 的倍数而漏掉减去 15 的倍数(得到 2733,正是错选 B);或把"倍数之和"错算成"倍数个数"。

详细解析(节选)

解析

模拟代码:

int s = 0;
for (int i = 1; i <= 100; i++)
    if (i % 3 == 0 || i % 5 == 0)
        s += i;

本题实质是求 1~100 中所有 3 或 5 的倍数之和,用容斥原理一次算清。

第一步:3 的倍数之和

1~100 中 3 的倍数是 3, 6, 9, …, 99,共 ⌊100/3⌋ = 33 项,公差 3 的等差数列:

S₃ = 3 × (1 + 2 + … + 33) = 3 × 33×34/2 = 3 × 561 = 1683

第二步:5 的倍数之和

5, 10, …, 100,共 ⌊100/5⌋ = 20 项:

S₅ = 5 × (1 + 2 + … + 20) = 5 × 210 = 1050

第三步:减去被重复计算的 15 的倍数

既是 3 的倍数又是 5 的倍数即为 15 的倍数:15, 30, …, 90,共 ⌊100/15⌋ = 6 项:

S₁₅ = 15 × (1 + 2 + … + 6) = 15 × 21 = 315

合并

s = S₃ + S₅ − S₁₅ = 1683 + 1050 − 315 = 2418

选 D。

其他选项为什么错

记忆点

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断