首页 > 编程语言 >历年CSP-J初赛真题解析 | 2019年CSP-J初赛阅读程序(16-33)

历年CSP-J初赛真题解析 | 2019年CSP-J初赛阅读程序(16-33)

时间:2024-09-17 11:20:49浏览次数:3  
标签:真题 int 初赛 答案 ans 字符串 100 解析 CSP

学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:历年CSP-J初赛真题解析 | 汇总_热爱编程的通信人的博客-CSDN博客


#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;
}

第16题

输入的字符只能由小写字母或大写字母组成。( )

A.对

B.错

【答案】:B

【解析】

输入c为空格,第11行的if语句不发生,输出结果也没有影响。

第17题

若将第8行的"i=1"改为"i=0",程序运行时会发生错误。( )

A.对

B.错

【答案】:A

【解析】

i=0,n%0,程序会报错

第18题

若将第8行的"i<=n"改为"i*i<=n",程序运行结果不会改变。( )

A.对

B.错

【答案】:B

【解析】

使用代入法计算,超过 n \sqrt n n ​的数,虽然也是n的约数,但语句却未执行

第19题

若输入的字符串全部由大写字母组成,那么输出的字符串就跟输入的字符串一样。( )

A.对

B.错

【答案】:A

【解析】

输入字符串都是大写字母,第11行语句不会执行,输出也都是大写字母

第20题

若输入的字符串长度为18,那么输入的字符串跟输出的字符串相比,至多有( )个字符不同。

A.18

B.6

C.10

D.1

【答案】:B

【解析】

18的约数个数是6个,分别为1,2,4,8,9,16

第21题

若输入的字符串长度为( ),那么输入的字符串跟输出的字符串相比,至多有36个字符不同。

A.36

B.100000

C.1

D.128

【答案】:B

【解析】

就是求那个长度有36个约数。

10000 = 2 5 × 5 5 10000=2^5 \times 5^5 10000=25×55,(5+1) * (5+1)=36,就是10000的约数个数

#include <cstdio>
using namespace std;
int n,m;
int a[100], b[100];

int main() {
	scanf("%d%d", &n, &m);
	for (int i=1; i<=n; ++i)
		a[i] = b[i] = 0;
	for (int i=1; i<=m; ++i) {
		int x, y;
		scanf("%d%d", &x, &y);
		if (a[x]<y && b[y]<x) {
			if (a[x]>0)
				b[a[x]] = 0;
			if (b[y]>0)
				a[b[y]] = 0;
			a[x] = y;
			b[y] = x;
		}
	}
	int ans = 0;
	for (int i=1; i<=n; ++i) {
		if (a[i]==0) 
			++ans;
		if (b[i]==0)
			++ans;
	}
	printf("%d\n", ans);
	return 0;
}

假设输入的n和m都是正整数,x和y都是在[1,n]范围内的整数,完成下面的判断题和单选题:

第22题

当m>0时,输出值一定小于2n。( )

A.对

B.错

【答案】:A

【解析】

假设n=5,m=5

12345
a00000
b00000
x=2,y=4后a,b
04000
00020
x=4,y=2后a,b
04020
04020
x=3,y=5后a,b
04520
04023
x=4,y=4后a,b
(原先x=3)
00540
00043
x=4,y=5后a,b
00050
00004

最后计算ans=8。

题目是求当x出现多次时,选择对应y的最大值,以及y出现多次时,选择对应x的最大值。如果不再选择,则将其改为0。如x=4,y=2。

执行第13行后,第一对x和y,就会执行第18和第19行,就一定有a[i]或b[i]不等于0,则ans一定小于2n。

第23题

执行完第27行的"++ans"时, ans一定是偶数。( )

A.对

B.错

【答案】:B

【解析】

n=2,m=1,x=1,y=2,i=1时,ans就是1。

第24题

a[i]和b[i]不可能同时大于0。( )

A.对

B.错

【答案】:B

【解析】

刚才举例中,x=4,y=4,执行后a[i]和b[i]同时大于0

第25题

若程序执行到第13行时,x总是小于y,那么第15行不会被执行。( )

A.对

B.错

【答案】:B

【解析】

程序中都是x与x比较,y与y比较,与x和y的大小关系无关,按之前的举例,第15行就被执行了。

第26题

若m个x两两不同,且m个y两两不同,则输出的值为( )。

A.2n-2m

B.2n+2

C.2n-2

D.2n

【答案】:A

【解析】

如果都是两两不同,每次都是2m个0小时,所以最后ans=2n-2m

第27题

若m个x两两不同,且m个y都相等,则输出的值为( )。

A.2n-2

B.2n

C.2m

D.2n-2m

【答案】:A

【解析】

多个相同的y,会选择最大的x,那么最后只有y和选中的那个x,a[y]和a[x]这两个不为0,所以ans=2n-2

#include <iostream>
using namespace std;
const int maxn = 10000;
int n;
int a[maxn], b[maxn];

int f(int l, int r, int depth) {
	if (l > r)
		return 0;
	int min = maxn, mink;
	for (int i=l; i<=r; ++i) {
		if (min>a[i]) {
			min = a[i];
			mink = i;
		}
	}
	int lres = f(l, mink-1, depth+1);
	int rres = f(mink+1, r, depth+1);
	return lres + rres + depth * b[mink];
}
int main() {
	cin >> n;
	for (int i=0; i<n; ++i)
		cin >> a[i];
	for (int i=0; i<n; ++i)
		cin >> b[i];
	cout << f(0, n-1, 1) << endl;
	return 0;
}

第28题

如果a数组有重复的数字,则程序运行会发生错误。( )

A.对

B.错

【答案】:B

【解析】

没有存在运行错误的代码,常见的如数组越界、n作为除数、sqrt(-1)等

第29题

如果b数组全为0,则输出为0。( )

A.对

B.错

【答案】:A

【解析】

最后是depth * b[mink],如果b数组为0,则计算结果一定为0

第30题

当n=100时,最坏情况下,与第12行的比较运算执行的次数最接近的是:( )。

A.5000

B.600

C.6

D.100

【答案】:A

【解析】

二叉树,最深是链形,则最深是100层。100+99+98+…+1=5050

第31题

当n=100时,最好情况下,与第12行的比较运算执行的次数最接近的是:( )。

A.100

B.6

C.5000

D.600

【答案】:D

【解析】

最好情况是6层深度的二叉树,每层比较次数约100次。故为600次

第32题

当n=10时,若b数组满足,对任意0≤i<n,都有b[i]=i+1,那么输出最大为( )。

A.386

B.383

C.384

D.385

【答案】:D

【解析】

最大为1 * 1 + 2 * 2 + 3 * 3 + … + 9 * 9 + 10 * 10 = 385

第33题

当n=100时,若b数组满足,对任意0≤i<n,都有b[i]=1,那么输出最小为( )。

A.582

B.580

C.579

D.581

【答案】:B

【解析】

深度越浅越好,1 * 1 + 2 * 2 + 3 * 4 + 4 * 8 + 5 * 16 + 6 * 32 + 7 * 37 = 580

标签:真题,int,初赛,答案,ans,字符串,100,解析,CSP
From: https://blog.csdn.net/guolianggsta/article/details/142298371

相关文章

  • NOIP 2017 普及组初赛试题及解析(第三部分:阅读程序(3-4))
    ......
  • CSP 初赛要点复习
    位运算逻辑与、按位与之类的东西是不同的!“逻辑”的是判断两个数都不为\(0\),“按位”的是判断两个数的每一个二进制位与的结果,是不同的。其他运算也类似。运算符优先级如图所示:注意,~和!是同级的。加法位运算表示:a+b=(a^b)+((a&b)<<1)。与的符号开口向下,和交集的符号\(......
  • 『模拟赛』CSP-S加赛1
    Rank一般A.小W与伙伴招募仔细想了想,发现是贪心题。赛时想了跟正解完全有些不太一样的做法,被顶针说假了,但其实开了longlong能有80pts。后来发现如果思路正确打\(\mathcal{O(nm)}\)的暴力能有95pts。《对于60%的数据》考虑正解的贪法,每天相当于将第\(i\)宝石......
  • 202312-2 因子化简ccfcsp
    常规质数因子带相关资料抄写稍加修改指数的筛选部分includeinclude<math.h>typedeflonglongll;usingnamespacestd;boolisprime(lln){inti;if(n<=1)returnfalse;intsq=(int)sqrt(1.0n);for(i=2;i<=sq;i++){if(n%i==0)returnfalse;}returntrue;}cons......
  • 2024CSP-J初赛全真模拟卷选择题篇(原创,难度偏简单)
    注意,本卷由再临TSC原创,禁止转载!本卷难度偏简单,若想要通过初赛本卷应拿80+分左右查看答案的方法:if(设备=="PC"){    把光标移到答案上面,选中答案,就会显示();}elseif(设备==移动端b||设备==平板){    把答案复制,找到随便一个地方粘贴即可();}else{......
  • 信息学奥赛初赛天天练-90-CSP-S2023基础题2-离散数学、染色、完全三叉树、平面图、边
    PDF文档公众号回复关键字:202409152023CSP-S选择题1单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)6以下连通无向图中,()一定可以用不超过两种颜色进行染色A完全三叉树B平面图C边双连通图D欧拉图7最长公共子序列长度常常用来衡量两个序列的相......
  • 基于PHP的考研真题资料互助交流平台vue.js【开题实训报告源码论文】
      博主介绍:......
  • 总结:1037 - CSP 2021 提高级第一轮
    我的提交记录与结果以比较为基本运算,对于\(2n\)个数,同时找到最大值和最小值,最坏情况下需要的最小的比较次数为()。\(\textttA\).4n-2\(\textttB\).3n+1\(\color{#5eb95e}\texttt{C}\).3n-2\(\color{#e74c3c}\textttD\).2n+1【解析】:首先先将原数组两两分组。每组......
  • 初赛重点
    NOIP2012CPU是由硅制成的。ENIAC属于电子管计算机。CPU的寻址空间\(=2^{位数}\)位。3G移动技术:CDMA系列和Wimax。时间复杂度的表示:\(O(f(n))\)表示当程序的规模大于某个常数时,总是有一个常数\(S\)使得\(S\timesf(n)\ge\)实际用时,即时间复杂度上界。\(\Theta(......
  • 华为OD机试真题-水仙花数-2024年OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客  题目描述所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。例如153是水仙花数,153是一个3位数,并且153=1^3+5^3+3^3。输入描述第一行输入一个整数n,表示一个n位的......