正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2026 第一轮真题 › 第 18 题
CSP-J 2026 第一轮 第 18 题:程序(一):假设输入为非负整数,则程序输出的第一个数一定不小于第二个数
题目
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int x = 1, y = 1;
while (n > 0) {
if (n % 2 == 0) {
++x;
} else {
++x;
++y;
}
n = n / 2;
}
cout << x << ' ' << y << endl;
return 0;
}
以下问题均假定输入的 $n$ 为不超过 $2^{31}- 1$ 的非负整数。本小题
假设输入为非负整数,则程序输出的第一个数一定不小于第二个数。( )
选项
- √. 正确
- ×. 错误
答案
√
题解
答案:√ 正确。
初始时,x = y = 1。每次循环:
- 如果
n是偶数,只给x加 1,x与y的差增加 1。 - 如果
n是奇数,x、y同时加 1,两者的差不变。
因此,x - y 从 0 开始,只会增加或保持不变,始终有 x ≥ y。
特别地,输入 n = 0 时不进入循环,输出 1 1,也符合条件。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号