学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。
附上汇总贴:历年CSP-J初赛真题解析 | 汇总_热爱编程的通信人的博客-CSDN博客
#include <stdio.h>
char st[100];
int main() {
scanf("%s", st);
for (int i=0; st[i]; ++i) {
if ('A' <= st[i] && st[i] <= 'Z')
st[i]+=1;
}
printf("%s\n", st);
return 0;
}
第18题
输入:QuanGuoLianSai
输出:( )
【答案】:RuanHuoMianTai
【解析】
第6行代码的st[i]用来判断是否到达字符串的末尾。
题目的目的是判断大写字母后,将字母变为后一个字母
#include <stdio.h>
int main() {
int x;
scanf("%d", &x);
int res = 0;
for (int i=0; i<x; ++i) {
if (i * i % x == 1) {
++res;
}
}
printf("%d", res);
return 0;
}
第19题
输入:15
输出:( )
【答案】:4
【解析】
题目是求i的平方模x为1的数的数量。0~14之间有1、4、11、14一共4个数
#include <iostream>
using namespace std;
int n, m;
int findans(int n, int m) {
if (n==0) return m;
if (m==0) return n % 3;
return findans(n-1, m) - findans(n, m-1) + findans(n-1, m-1);
}
int main() {
cin >> n >> m;
cout << findans(n, m) << endl;
return 0;
}
第20题
输入:5 6
输出:( )
【答案】:8
【解析】
可以把题目理解为递推,递推式f[n][m] = f[n-1][m] - f[n][m-1] + f[n-1][m-1]
n\m | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
1 | 1 | 0 | 3 | 2 | 5 | 4 | 7 |
2 | 2 | -1 | 4 | 1 | 6 | 3 | 8 |
3 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
4 | 1 | 0 | 3 | 2 | 5 | 4 | 7 |
5 | 2 | -1 | 4 | 1 | 6 | 3 | 8 |
则f[5][6]=8
#include <stdio.h>
int n, d[100];
bool v[100];
int main() {
scanf("%d", &n);
for (int i=0; i<n; ++i) {
scanf("%d", d+i);
v[i] = false;
}
int cnt = 0;
for (int i=0; i<n; ++i) {
if (!v[i]) {
for (int j=i; !v[j]; j=d[j]) {
v[j] = true;
}
++cnt;
}
}
printf("%d\n", cnt);
return 0;
}
第21题
输入:10 7 1 4 3 2 5 9 8 0 6
输出:( )
【答案】:6
【解析】
先从模拟程序的运行入手,d[10]={7,1,4,3,2,5,9,8,0,6}
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
d | 7 | 1 | 4 | 3 | 2 | 5 | 9 | 8 | 0 | 6 | |
v | |||||||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | cnt | |
i=0 | 1 | 1 | 1 | 1 | |||||||
i=1 | 1 | 2 | |||||||||
i=2 | 1 | 1 | 3 | ||||||||
i=3 | 1 | 4 | |||||||||
i=4 | 4 | ||||||||||
i=5 | 1 | 5 | |||||||||
i=6 | 1 | 1 | 6 | ||||||||
i=7 | 6 | ||||||||||
i=8 | 6 | ||||||||||
i=9 | 6 |
题目是图论的一个概念,根据点与点之间的连线,可以画出有向图,这个图的连通分量是6