GESP 八级 · GESP 202406 C++ 八级 第 15 题

选择题 · 答案 D

← 整套速查表 GESP 八级 全部真题

题目

下面程序的输出为( )。

#include <iostream>
using namespace std;
int main() {
    int cnt = 0;
    for (int x = 0; x <= 10; x++)
        for (int y = 0; y <= 10; y++)
            for (int z = 0; z <= 10; z++)
                if (x + y + z <= 15)
                    cnt++;
    cout << cnt << endl;
    return 0;
}
答案:D

解题思维

模拟程序执行过程,逐行跟踪变量变化,特别关注循环边界和递归终止条件。

常见错误

模拟执行时注意:① 循环变量的起始和终止值;② 递归的边界条件;③ 数据类型转换和精度问题。

详细解析(节选)

【考点】组合计数|容斥原理|条件累加

1. 🎯 考纲定位(考点定位) GESP 八级《数学逻辑》模块 3.4 节"组合计数"。命题人把这道题塞进试卷,就是要卡住那些只会写循环不会用数学公式的"死码农"——他们看到三重循环就慌,完全没意识到自己可以用组合数学秒杀。

2. 🧠 解题思维(拆解与通法) 题目本质是求非负整数解个数:$x+y+z \le 15$,且 $0 \le x,y,z \le 10$。用容斥原理:

通法提炼:形如 $x_1+x_2+\dots+x_k \le S$ 的计数,先加松弛变量 $s$ 化为等式 $x_1+\dots+x_k+s=S$,用隔板法 $\binom{S+k}{k}$,再用容斥剔除每个变量越界的子集。

3. 🪤 陷阱拆解(命题人的套路)

4. 🔄 反命题思维(教练升华)

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