正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2019 第一轮真题 › 第 20 题
CSP-J 2019 第一轮 第 20 题:程序(一):长度18时最多多少字符不同
题目
#include <cstdio>
#include <cstring>
using namespace std;
char st[100];
int main() {
scanf("%s", st);
int n = strlen(st);
for (int i = 1; i <= n; ++i) {
if (n % i == 0) {
char c = st[i - 1];
if (c >= 'a')
st[i - 1] = c - 'a' + 'A';
}
}
printf("%s", st);
return 0;
}
本小题
若输入的字符串长度为 $18$,那么输入的字符串跟输出的字符串相比,至多有()个字符不同。
选项
- A. 18
- B. 6
- C. 10
- D. 1
答案
B
题解
答案选 B,6。
程序遍历第 \(1\) 到第 \(18\) 个字符,只有满足 18 % i == 0,也就是 \(i\) 是 18 的因数时,才可能修改第 \(i\) 个字符(下标为 i - 1)。
18 的因数是: \[ 1,\ 2,\ 3,\ 6,\ 9,\ 18 \] 一共 6 个,所以最多修改 6 个字符。
只要这 6 个位置都是小写字母,它们就都会变为大写字母,达到最大值。例如,输入 18 个 a,就恰好有 6 个字符发生变化。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号