#J0005. CSP-J 2025 初赛模拟卷 5
CSP-J 2025 初赛模拟卷 5
CSP-J 2025初赛模拟卷 5
一、单项选择题(每题 2 分,共 30 分)
第 1 题 十进制数 2m5 的十六进制表示是( )。
{{ select(1) }}
- 07D9
- 07E9
- 07F9
- 07F1
第 2 题 以下关于计算机竞赛 I/OI 的描述正确的是( )。
{{ select(2) }}
- I/OI 非英语国家参赛选手可以在比赛中携带电子词典
- I/OI 参赛选手可携带已关机的手机放在自己座位后面的包里
- I/OI 参赛选手在比赛时间内去厕所的时候可携带手机
- I/OI 全称是国际信息学奥林匹克竞赛
第 3 题 以下不能用 ASCII 码表示的字符是( )。
{{ select(3) }}
- @
- ①
- ^
- ~
第 4 题 设变量 s 为 double 型且已赋值,下列哪条语句能将 s 中的数值保留到小数点后一位,并将第二位四舍五入?( )。
{{ select(4) }}
- s = (x * 10 + 0.5) / 10.0
- s = s * 10 + 0.5 / 10.0
- s = (s / 10 + 0.5) * 10.0
- s = (int(s * 10 + 0.5) / 10.0
第 5 题 以下不属于 STL 链表中的函数的是( )。
{{ select(5) }}
- sort
- empty
- push_back
第 6 题 小明写了一个程序,在这里用到的数据结构是( )。
#include
using namespace std;
int k;
int f(int a) {
if (a - k == 0 || (a - k) % 2 == 0)
return f((a + k) / 2) + f((a - k) / 2);
else
return 1;
}
int main() {
int n;
cin >> n >> k;
if ((n + k) % 1 == 0)
cout
using namespace std;
int solve(vector nums) {
map cnt;
int tot = 0;
for (auto v : nums) {
cnt[v]++;
tot += v;
}
int ans = -1e5;
for (auto v : nums) {
cnt[v]--;
if ((tot - v) % 2 == 0 && cnt[(tot - v) / 2] > 0)
ans = max(ans, v);
cnt[v]++;
}
return ans;
}
int main() {
int n;
cin >> n;
vector a(n);
for (int i = 0; i > a[i];
cout ` 换为 ``,程序依然可以正常运行。( )
{{ select(18) }}
- 对
- 错
**选择题**
19. 若输入 86 -315 -354137 -4213,则输出是( )。
{{ select(19) }}
- 13
- -35
- -31
- -17
20. 如果去除第 19 行的代码,对于输入 423510,则输出是( )。
{{ select(20) }}
- 2
- 5
- 10
- -10
### (2)
```cpp
#include
using namespace std;
const int inf = 0x3f3f3f3f;
int solve(vector words, string target) {
const int n = target.length();
set s;
for (auto v : words)
for (int i = 1; i dp(n + 1, inf);
dp[0] = 0;
for (int i = 0; i > n;
vector a(n);
for (int i = 0; i > a[i];
string t;
cin >> t;
cout
using namespace std;
int calc(int n, int presses) {
set seen;
for (int i = 0; i pressArr(4);
for (int j = 0; j > j) & 1;
int sum = 0;
for (int j = 0; j = 3)
status |= (pressArr[0] ^ pressArr[2]) > n >> presses;
cout
using namespace std;
const int inf = 0x3f3f3f3f;
void solve() {
int n;
cin >> n;
vector a(n + 1);
for (int i = 1; i > a[i];
vector dp(n + 1);
for (int i = 1; i > t;
while (t--)
solve();
return 0;
}
- ①处应填( )。
{{ select(33) }}
- lst(n + 1)
- lst(n + 1, 0)
- lst(n + 1, inf)
- lst(n + 1, -inf)
- ②处应填( )。
{{ select(34) }}
- dp[i - 1]
- dp[i] - 1
- dp[i + 1]
- dp[i] + 1
- ③处应填( )。
{{ select(35) }}
- lst[a[i]]
- lst[a[i]] + i
- lst[a[i]] + i + 1
- lst[i] + i
- ④处应填( )。
{{ select(36) }}
- dp[i - 1] - i
- dp[i - 1] + i
- dp[i + 1] - i
- dp[i + 1] + i
- ⑤处应填( )。
{{ select(37) }}
- dp[1]
- dp[0]
- dp[n - 1]
- dp[n]
(2) 题目描述
输入 n (1 ≤ n ≤ 1 × 10^5) 和长为 n 的数组 a (0 ≤ a[i] using namespace std;
void solve() { int n; cin >> n; vector a(n + 1); for (int i = 1; i > a[i]; int ans = ⑦; for (int i = 0; ①; i++) { int cnt = 0, lst = ⑦; for (int j = 1; j > t; while (t--) solve(); return 0; }
38. ①处应填( )。
{{ select(38) }}
- i 20
- i != 20
39. ②处应填( )。
{{ select(39) }}
- !(a[i] & (1 n
42. ⑤处应填( )。
{{ select(42) }}
- ans
- min(ans, n)
- min((ans == 0 ? 1 : ans), n)
- (ans == 0 ? 1 : ans)