导航菜单
首页 >  csp-s初赛真题解析  > 2020 CSP

2020 CSP

2020普及组初赛 选择题:

1.内存编号,就是地址。

2.编译器的作用是讲源程序翻译成机器指令代码,将高级语言转换成低级语言。

4.一位即 1 比特,1字节=8比特。 即2048 * 1024 * 32 / 8 / 1024 /1024 MB

冒泡排序比较次数最少的情况:原本所有数字的顺序就是对的,一趟比较结束,所以是比较 n-1 次。

int XYZ(int a[],int n)//n个元素 从下标 1 开始存储 {if(n==1)return a[n];else{int temp=XYZ(a,n-1);return min(temp,a[n]); } }

代码翻译后如上图所示,即求最小值。

8.n个节点连通,可以当成是连成一条线,这样需要的边最少。

10.这是一个排列问题,可以把双胞胎绑一块,当成一个人,然后每次排列完交换他们两个人的顺序。总排列数就是:A44 * 2

14.每班先给一个名额,问题就变成了7个班级分三个名额。

三个名额:可以分成三份,两份,或者一份。

总方案数就是:C 73 +C 72 * 2 +C 71 = 35 + 42 + 7 = 84

15.这是一个组合问题,先选出两幅成套的,然后剩余6只选一只,然后剩下的不能匹配成套的4只手套选1只,这里会出现后面两只手套先选后选导致的重复,所以要方案数要除以二。

总方案数就是:( C 52 * C 61 +* C 41 )/ 2 = 120

阅读程序1: /*这个程序通过encoder,decoder两次转换产生一个乱序字符串,利用乱序字符串加密encoder ="CSPABDEFGHIKLMNOQRTUVWXYZ"decoder ="DEAFGHIKLMNOPQCRSBTUVWXYZ"*/#include #include using namespace std;char encoder[26] = {'C', 'S', 'P', 0};char decoder[26];string st;int main() {int k = 0;for (int i = 0; i < 26; ++i)//统计原字符串中字符数if (encoder[i] != 0) ++k;for (char x = 'A'; x > st;for (int i = 0; i < st.length(); ++i) //利用decoder再加密输入字串st[i] = decoder[st[i] - 'A'];cout > n >> k;d[0] = 0;len = 1;ans = 0;for (long long i = 0; i < n; ++i) {++d[0];//每次个位 +1//进位处理到倒数第二高位for (int j = 0; j + 1 < len; ++j) { if (d[j] == k) {d[j] = 0;d[j + 1] += 1;++ans;}}//最高位单独处理 涉及到len的调整if (d[len - 1] == k) {d[len - 1] = 0;d[len] = 1;++len;++ans;}}cout

相关推荐: