开始整卷作答
按大题分页,翻页自动存草稿,做完统一交卷。
## 一、单项选择题(共15题,每题2分,共计30分)
第 1–15 题 · 共 15 题
## 二、阅读程序(判断题1分,选择题3分,共计37分)
判断题正确填 `T`,错误填 `F`。
### 第1题
```cpp
void recursion(int n)
{
if (n == 0) return;
int lowbit = n % 3;
recursion(n / 3);
std::cout << lowbit;
}
void iteration(int n)
{
int buffer[10];
int size = 0;
while (n > 0) {
buffer[size++] = n % 3;
n = n / 3;
}
while (size > 0) {
std::cout << buffer[--size];
}
}
```
第 16–20 题 · 共 5 题
### 第2题
```cpp
int solve1(int n)
{
int s = 0;
int f = 1;
for (int i = 1; i <= n; ++i) {
f = f * i;
int m = f;
while (m % 10 == 0) {
s++;
m = m / 10;
}
}
return s;
}
int solve2(int n)
{
int t = 0;
while (n > 0) {
t = t + n / 5;
n = n / 5;
}
return t;
}
```
第 21–26 题 · 共 6 题
### 第三题
```cpp
#include<iostream>
int play[3][3] = {0};
int score[3][3];
bool check_row(int i, int role) {
if (play[i][0] != role) return false;
if (play[i][1] != role) return false;
if (play[i][2] != role) return false;
return true;
}
bool check_col(int j, int role) {
if (play[0][j] != role) return false;
if (play[1][j] != role) return false;
if (play[2][j] != role) return false;
return true;
}
bool check_diag(int role) {
if (play[1][1] != role) return false;
if (play[0][0] == role && play[2][2] == role) return true;
if (play[0][2] == role && play[2][0] == role) return true;
return false;
}
bool check(int i, int j, int role) {
return check_row(i, role) || check_col(j, role) || check_diag(role);
}
int adv(int step) {
if (step == 9) return 0;
int role = (step % 2) + 1;
const int inf = 1000000000;
int best = -inf;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (play[i][j] == 0) {
play[i][j] = role;
if (check(i, j, role)) {
best = inf;
}
else {
int test = score[i][j] - adv(step + 1);
if (best < test) {
best = test;
}
}
play[i][j] = 0;
}
}
}
return best;
}
int main() {
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
std::cin >> score[i][j];
int d = adv(0);
if (d > 0)
std::cout << "First Win\n";
else
std::cout << "Second Win\n";
}
```
第 27–34 题 · 共 8 题
## 三、完善程序(单选题,每小题3分,共计33分)
### 第1题
有 $n$ 名学生参加了一场考试,分数没有公开。现有 $m$ 条线索,其中第 $i$ 条线索确定第 $x_i$ 号学生的分数高于第 $y_i$ 号学生。又确定没有人分数是相同的。根据这些线索,将学生的分数排序后,多少人的名次是可以确定的呢?保证给定的线索没有矛盾。
```cpp
#include<iostream>
int main()
{
const int maxn = 100;
bool f[maxn][maxn] = {false};
int c[maxn] = {0};
int n, m;
std::cin >> n >> m;
for (int i = 0; i < m; ++i) {
int x, y;
std::cin >> x >> y;
____(1)____;
}
for (int _(2)_ = 0; _(2)_ < n; ++ _(2)_)
for (int _(3)_ = 0; _(3)_ < n; ++ _(3)_)
for (int _(4)_ = 0; _(4)_ < n; ++ _(4)_)
if (____(5)____)
f[i][j] = true;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
if (i != j)
if (___(6)___)
c[i]++;
int ans = 0;
for (int i = 0; i < n; ++i)
if (___(7)___) ans ++;
std::cout << ans << '\n';
}
```
第 35–39 题 · 共 5 题
### 第2题
给定 $n$ 个整数 $a_0,a_1,\ldots,a_{n-1}$,其中 $1\le n\le40$,请统计,这个序列有多少种子序列,其子序列的和大于 $0$?
```cpp
#include<iostream>
#include<algorithm>
int a[40];
int x[1 << 20];
int y[1 << 20];
int generate(int begin, int end, int sum, int* out, int pos) {
if (begin == end) {
____(1)____;
return 1;
}
else {
int f = generate(begin + 1, end, sum + a[begin], out, pos);
int s = generate(begin + 1, end, ____(2)____);
return f + s;
}
}
int main() {
int n;
std::cin >> n;
for (int i = 0; i < n; ++i) std::cin >> a[i];
int x_size = ____(3)____;
int y_size = ____(4)____;
std::sort(x, x + x_size);
std::sort(y, y + y_size);
int j = y_size;
long long pair = 0;
for (int i = 0; i < x_size; ++i) {
while (j > 0 && ____(5)____) {
j--;
}
pair += ____(6)____;
}
std::cout << pair << "\n";
}
```
第 40–45 题 · 共 6 题
展开逐题清单(单独练某一道)
● 绿=已通过 ● 橙=做过没全对 ● 灰=没做过
## 一、单项选择题(共15题,每题2分,共计30分)
1.
珅泽教育CSP-J第一轮模拟考第二套 第 1 题
2.
珅泽教育CSP-J第一轮模拟考第二套 第 2 题
3.
珅泽教育CSP-J第一轮模拟考第二套 第 3 题
4.
珅泽教育CSP-J第一轮模拟考第二套 第 4 题
5.
珅泽教育CSP-J第一轮模拟考第二套 第 5 题
6.
珅泽教育CSP-J第一轮模拟考第二套 第 6 题
7.
珅泽教育CSP-J第一轮模拟考第二套 第 7 题
8.
珅泽教育CSP-J第一轮模拟考第二套 第 8 题
9.
珅泽教育CSP-J第一轮模拟考第二套 第 9 题
10.
珅泽教育CSP-J第一轮模拟考第二套 第 10 题
11.
珅泽教育CSP-J第一轮模拟考第二套 第 11 题
12.
珅泽教育CSP-J第一轮模拟考第二套 第 12 题
13.
珅泽教育CSP-J第一轮模拟考第二套 第 13 题
14.
珅泽教育CSP-J第一轮模拟考第二套 第 14 题
15.
珅泽教育CSP-J第一轮模拟考第二套 第 15 题
## 二、阅读程序(判断题1分,选择题3分,共计37分)
判断题正确填 `T`,错误填 `F`。
### 第1题
```cpp
void recursion(int n)
{
if (n == 0) return;
int lowbit = n % 3;
recursion(n / 3);
std::cout << lowbit;
}
void iteration(int n)
{
int buffer[10];
int size = 0;
while (n > 0) {
buffer[size++] = n % 3;
n = n / 3;
}
while (size > 0) {
std::cout << buffer[--size];
}
}
```
16.
珅泽教育CSP-J第一轮模拟考第二套 第 16 题
17.
珅泽教育CSP-J第一轮模拟考第二套 第 17 题
18.
珅泽教育CSP-J第一轮模拟考第二套 第 18 题
19.
珅泽教育CSP-J第一轮模拟考第二套 第 19 题
20.
珅泽教育CSP-J第一轮模拟考第二套 第 20 题
### 第2题
```cpp
int solve1(int n)
{
int s = 0;
int f = 1;
for (int i = 1; i <= n; ++i) {
f = f * i;
int m = f;
while (m % 10 == 0) {
s++;
m = m / 10;
}
}
return s;
}
int solve2(int n)
{
int t = 0;
while (n > 0) {
t = t + n / 5;
n = n / 5;
}
return t;
}
```
21.
珅泽教育CSP-J第一轮模拟考第二套 第 21 题
22.
珅泽教育CSP-J第一轮模拟考第二套 第 22 题
23.
珅泽教育CSP-J第一轮模拟考第二套 第 23 题
24.
珅泽教育CSP-J第一轮模拟考第二套 第 24 题
25.
珅泽教育CSP-J第一轮模拟考第二套 第 25 题
26.
珅泽教育CSP-J第一轮模拟考第二套 第 26 题
### 第三题
```cpp
#include<iostream>
int play[3][3] = {0};
int score[3][3];
bool check_row(int i, int role) {
if (play[i][0] != role) return false;
if (play[i][1] != role) return false;
if (play[i][2] != role) return false;
return true;
}
bool check_col(int j, int role) {
if (play[0][j] != role) return false;
if (play[1][j] != role) return false;
if (play[2][j] != role) return false;
return true;
}
bool check_diag(int role) {
if (play[1][1] != role) return false;
if (play[0][0] == role && play[2][2] == role) return true;
if (play[0][2] == role && play[2][0] == role) return true;
return false;
}
bool check(int i, int j, int role) {
return check_row(i, role) || check_col(j, role) || check_diag(role);
}
int adv(int step) {
if (step == 9) return 0;
int role = (step % 2) + 1;
const int inf = 1000000000;
int best = -inf;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (play[i][j] == 0) {
play[i][j] = role;
if (check(i, j, role)) {
best = inf;
}
else {
int test = score[i][j] - adv(step + 1);
if (best < test) {
best = test;
}
}
play[i][j] = 0;
}
}
}
return best;
}
int main() {
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
std::cin >> score[i][j];
int d = adv(0);
if (d > 0)
std::cout << "First Win\n";
else
std::cout << "Second Win\n";
}
```
27.
珅泽教育CSP-J第一轮模拟考第二套 第 27 题
28.
珅泽教育CSP-J第一轮模拟考第二套 第 28 题
29.
珅泽教育CSP-J第一轮模拟考第二套 第 29 题
30.
珅泽教育CSP-J第一轮模拟考第二套 第 30 题
31.
珅泽教育CSP-J第一轮模拟考第二套 第 31 题
32.
珅泽教育CSP-J第一轮模拟考第二套 第 32 题
33.
珅泽教育CSP-J第一轮模拟考第二套 第 33 题
34.
珅泽教育CSP-J第一轮模拟考第二套 第 34 题
## 三、完善程序(单选题,每小题3分,共计33分)
### 第1题
有 $n$ 名学生参加了一场考试,分数没有公开。现有 $m$ 条线索,其中第 $i$ 条线索确定第 $x_i$ 号学生的分数高于第 $y_i$ 号学生。又确定没有人分数是相同的。根据这些线索,将学生的分数排序后,多少人的名次是可以确定的呢?保证给定的线索没有矛盾。
```cpp
#include<iostream>
int main()
{
const int maxn = 100;
bool f[maxn][maxn] = {false};
int c[maxn] = {0};
int n, m;
std::cin >> n >> m;
for (int i = 0; i < m; ++i) {
int x, y;
std::cin >> x >> y;
____(1)____;
}
for (int _(2)_ = 0; _(2)_ < n; ++ _(2)_)
for (int _(3)_ = 0; _(3)_ < n; ++ _(3)_)
for (int _(4)_ = 0; _(4)_ < n; ++ _(4)_)
if (____(5)____)
f[i][j] = true;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
if (i != j)
if (___(6)___)
c[i]++;
int ans = 0;
for (int i = 0; i < n; ++i)
if (___(7)___) ans ++;
std::cout << ans << '\n';
}
```
35.
珅泽教育CSP-J第一轮模拟考第二套 第 35 题
36.
珅泽教育CSP-J第一轮模拟考第二套 第 36 题
37.
珅泽教育CSP-J第一轮模拟考第二套 第 37 题
38.
珅泽教育CSP-J第一轮模拟考第二套 第 38 题
39.
珅泽教育CSP-J第一轮模拟考第二套 第 39 题
### 第2题
给定 $n$ 个整数 $a_0,a_1,\ldots,a_{n-1}$,其中 $1\le n\le40$,请统计,这个序列有多少种子序列,其子序列的和大于 $0$?
```cpp
#include<iostream>
#include<algorithm>
int a[40];
int x[1 << 20];
int y[1 << 20];
int generate(int begin, int end, int sum, int* out, int pos) {
if (begin == end) {
____(1)____;
return 1;
}
else {
int f = generate(begin + 1, end, sum + a[begin], out, pos);
int s = generate(begin + 1, end, ____(2)____);
return f + s;
}
}
int main() {
int n;
std::cin >> n;
for (int i = 0; i < n; ++i) std::cin >> a[i];
int x_size = ____(3)____;
int y_size = ____(4)____;
std::sort(x, x + x_size);
std::sort(y, y + y_size);
int j = y_size;
long long pair = 0;
for (int i = 0; i < x_size; ++i) {
while (j > 0 && ____(5)____) {
j--;
}
pair += ____(6)____;
}
std::cout << pair << "\n";
}
```
40.
珅泽教育CSP-J第一轮模拟考第二套 第 40 题
41.
珅泽教育CSP-J第一轮模拟考第二套 第 41 题
42.
珅泽教育CSP-J第一轮模拟考第二套 第 42 题
43.
珅泽教育CSP-J第一轮模拟考第二套 第 43 题
44.
珅泽教育CSP-J第一轮模拟考第二套 第 44 题
45.
珅泽教育CSP-J第一轮模拟考第二套 第 45 题