正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2026 第一轮真题 › 第 26 题
CSP-J 2026 第一轮 第 26 题:程序(二):将第 22 行的 if (c[i] = 10)
题目
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int a[100007], b[100007], c[100007], carry[100007];
string input_str;
int a_len, b_len;
int main() {
cin >> input_str;
a_len = input_str.size();
for (int i = 0; i < a_len; i++) {
a[i] = input_str[a_len - i - 1] - '0';
}
cin >> input_str;
b_len = input_str.size();
for (int i = 0; i < b_len; i++) {
b[i] = input_str[b_len - i - 1] - '0';
}
carry[0] = 0;
for (int i = 0; i < max(a_len, b_len) + 1; i++) {
c[i] = a[i] + b[i] + carry[i];
if (c[i] >= 10) {
carry[i + 1] = 1;
c[i] -= 10;
} else {
carry[i + 1] = 0;
}
}
for (int i = max(a_len, b_len); i >= 0; i--) {
cout << c[i];
}
cout << endl;
return 0;
}
本题输入的两个数均为非负整数,位数不超过 100000,可能包含前导零。本小题
将第 22 行的 if (c[i] >= 10) 改为 if (c[i] > 10) 后,当输入为 95 15 时,输出为( )。
选项
- A. 01010
- B. 110
- C. 140
- D. 1410
答案
A
题解
选 A. 01010。
数组按低位在前存储:95 存为 a[0]=5、a[1]=9,15 存为 b[0]=5、b[1]=1。全局数组的元素初始均为 0。
条件改成 c[i] > 10 后,恰好等于 10 时不会进位,也不会减去 10:
i | 计算 c[i] | 是否进位 |
|---|---|---|
| 0(个位) | 5 + 5 + 0 = 10 | 否 |
| 1(十位) | 9 + 1 + 0 = 10 | 否 |
| 2(额外一位) | 0 + 0 + 0 = 0 | 否 |
输出循环从 i=2 到 i=0,依次输出 0、10、10,中间没有空格,最终得到:
``text 01010 ``
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号