CSP-J2019 NOIP普及组初赛真题(阅读程序部分)
阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√,错误填×;除特殊说明外,判断题1.5分,选择题3分,共计40分)
#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;
}
1)输入的字符串只能由小写字母或大写字母组成。()
正确答案: 错
解析:输入的字符串也可以包含数字等其他字符
2)若将第8行的“i = 1”改为“i = 0”,程序运行时会发生错误()
正确答案: 对
解析:若i可以为0,则第9行的if语句条件“n%i==0”将发生运行是错误RE。
3)若将第8行的“i <= n”改为“i * i <= n”,程序运行结果不会改变。()
正确答案: 错
解析:当第8行的循环条件为“i<=n”时,字符串的末尾字符会被程序加工,但若改为“i*i<=n”,字符串的末尾字符将不会被程序加工(除非字符串长度为1)。
4)若输入的字符串全部由大写字母组成,那么输出的字符串就跟输入的字符串一样。()
正确答案: 对
解析:大写字母的ASCLL编码值小于小写字母的。若输入的字符串全部由大写字母组成,则程序不会对其进行加工。
5)若输入的字符串长度为18,那么输入的字符串跟输出的字符串相比,至多有()个字符不同。
A. 18 B. 6 C. 10 D. 1
正确答案: B
解析:18的正约数共有6个,因此程序最多修改输入字符串中的6个字符,即输出字符串与输入字符串最多有6个字符不同。
6)若输入的字符串长度为(),那么输入的字符串跟输出的字符串相比,至多有36个字符不同。
A. 36 B. 100000 C. 1 D. 128
正确答案: B
解析:要使输出字符串和输入字符串之间最多有36个字符不同,36应当是字符串长度n的约数个数。本题选项中,仅有100000满足要求,分解质因数得2^55^5,正约数共有(5+1)(5+1)=36个
学编程,找李老师
2.
#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", ans);
return 0;
}
假设输入的n和m都是正整数,x和y都是在[1, n]的范围内的整数,完成下面的判断题和单选题:
1)当m>0时,输出的值一定小于2n。()
正确答案: 对
解析:由限定条件0<x,y<=n可知,当m>0时,一定存在某个数对被我们选中,此时ans<2n
2)执行完第27行的"++ans"时,ans —定是偶数。()
正确答案: 错
解析:由于数对是一个左值与一个由值相匹配,因此ans最终一定是偶数。但第27行的“++ans”在第23行的for循环内部,其中间结果可能为奇数。
3)a[i]和b[i]不可能同时大于0。()
正确答案: 错
解析:a[i]用于记录与左值i相匹配的右值,不存在则为0;b[i]用于记录与右值i相匹配的左值,不存在则为0.当存在数对(i,y)和(x,i)都被我们选中时,a[i]和b[i]就会同时大于0。
4)右程序执行到第13行时,x总是小于y,那么第15行不会被执行。()
正确答案: 错
解析:存在反例,依次考虑数对(1,2)(1,3)时,第15行程序会被执行。
5)若m个x两两不同,且m个y两两不同,则输出的值为()
A. 2n-2m B. 2n+2 C. 2n-2 D. 2n
正确答案: A
解析:此时,输入的数对两两互不冲突,因此程序会将他们全部选中,根据上述ans的意义可知,其结果为2n-2m。
6)若m个x两两不同,且m个y都相等,则输出的值为()
A. 2n-2 B. 2n C. 2m D. 2n-2m
正确答案: A
解析:此时,输入的数对两两存在冲突,因此程序最终只会选用一个数对,根据上述ans的意义可知,其结果为2n-2。
#include <iostream>
using namespace std;
const int maxn = 10000;
int n;
int a[maxn];
int 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;
}
1)如果a数组有重复的数字,则程序运行时会发生错误。()
正确答案: 错
解析:若a数组有重复数字,则程序在根据a数组递归构造符合要求的二叉树时,对于相同结点值,会优先考虑位于左侧的。
2)如果b数组全为0,则输出为0。()
正确答案: 对
解析:程序最终输出的是各结点深度与b值得加权和,因此若b数组全为0,则加权和显然为0。
3)当n=100时,最坏情况下,与第12行的比较运算执行的次数最接近的是:()。
A. 5000 B. 600 C. 6 D. 100
正确答案: A
解析:最坏情况下,程序所构成的二叉树的每个结点最多有一个子结点,此时,程序将递归100层,其中第i层进行100-i+1次第12行的比较运算,总执行次数为100+99+98+...+1≈5000。
4)当n=100时,最好情况下,与第12行的比较运算执行的次数最接近的是:()。
A. 100 B. 6 C. 5000 D. 600
正确答案: D
解析:最佳情况下,程序构造二叉树时,对于每个结点会尽可能均分其左右子树。定义根结点深度为1,则含n=100个结点的树的深度最小为logn≈7,此时每选定一层结点,程序都需要执行约n次的第12行的比较运算,因此总执行次数约为nlogn≈600。
5)当n=10时,若b数组满足,对任意0<=i<n,都有b[i] = i + 1,那么输出最大为()。
A. 386 B. 383 C. 384 D. 385
正确答案: D
解析:此时,要使输出的ans值尽可能大,程序所构造的二叉树的深度应尽可能大。定义根结点深度为1,则含10个结点的二叉树的最大深度为10,因此ans的最大值为11+22+33+...+1010=385。
6)当n=100时,若b数组满足,对任意0 S i < 71,都有b[i]=1,那么输出最小为()。
A. 582 B. 580 C. 579 D. 581
正确答案: B
解析:此时,要使输出的ans值尽可能小,程序应参照完全二叉树构造此树,其中深度为1的结点共1个,深度为2的结点共2个,深度为3的结点共4个...深度为6的结点共32个,剩余37个结点的深度为7,因此ans的最小值为(11+22+33+...+632)+7*37=580。
CSP-J2019 NOIP普及组初赛真题(阅读程序部分)的更多相关文章
- CSP-J2019 NOIP普及组初赛真题(选择题部分)
NOIP初赛考试提纲 时间:10月的第2/3个星期六下午14:30~16:30 分数及形式:满分100分,形式为笔试(今年可能上机) 1.单项选择题,共15题,每题2分,共30分 2.阅读程序题,共3 ...
- NOIP提高组历年真题题解
2018 铺设道路 差分水题,推一下结论就好了. #include<cstdio> #include<algorithm> using namespace std; ],d[] ...
- 纪中10日T1 2300. 【noip普及组第一题】模板题
2300. [noip普及组第一题]模板题 (File IO): input:template.in output:template.out 时间限制: 1000 ms 空间限制: 262144 K ...
- NOIP提高组初赛难题总结
NOIP提高组初赛难题总结 注:笔者开始写本文章时noip初赛新题型还未公布,故会含有一些比较老的内容,敬请谅解. 约定: 若无特殊说明,本文中未知数均为整数 [表达式] 表示:在表达式成立时它的值为 ...
- 2016.9.3初中部上午NOIP普及组比赛总结
2016.9.3初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1339 这次真爽,拿了个第四!(我还被班主任叫过去1小时呢!) 进 ...
- 2016.10.29初中部上午NOIP普及组比赛总结
2016.10.29[初中部 NOIP普及组 ]模拟赛 做得好爽! 进度: 比赛:35+45+AC+0=180 改题:AC+AC+AC+0=300 幸运的数 有点无语--之前怕超限,还特意利用程序打了 ...
- 2016.10.7初中部上午NOIP普及组比赛总结
2016.10.7初中部上午NOIP普及组比赛总结 这次的题还可以,重新入了比赛的前十. 进度: 比赛:90+10+70+30=200 改题:AC+AC+AC+AC=AK 找试场 这题很简单,但是被欺 ...
- NOIP2015普及组第四题推销员
好久没有写博客了,今天再写一篇.还是先看题: 试题描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有 N 家 ...
- 2321. 【NOIP普及组T1】方程
2321. [NOIP普及组T1]方程 时间限制: 1000 ms 空间限制: 262144 KB 题目描述
随机推荐
- 使用ATOMac进行Mac自动化测试
ATOMac简介 atomac是一个支持在mac上做自动化的python库,GitHub地址如下: https://github.com/pyatom/pyatom 安装 # Python2 sudo ...
- 选择排序的实现以及如何编写测试 #CS61B-sp18-3.1
Selection Sort的思想: 就是在一系列数字中先找到一个最小的放在所有数字的第一个位置上,然后再从余下的数字里面找最小个放在余下的数字里的第一个位置上. 例如: 在这段数据里面我们找到最小的 ...
- 面试官你好,我已经掌握了MySQL主从配置和读写分离,你看我还有机会吗?
我是风筝,公众号「古时的风筝」,一个简单的程序员鼓励师. 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 面试官:我看你简历上写的你们公司数据库是 ...
- PHP date_sunrise() 函数
------------恢复内容开始------------ 实例 返回葡萄牙里斯本今天的日出时间: <?php// Lisbon, Portugal:// Latitude: 38.4 Nor ...
- PHP strptime() 函数
------------恢复内容开始------------ 实例 解析由 strftime() 生成的时间/日期: <?php$format="%d/%m/%Y %H:%M:%S&q ...
- PHP str_shuffle() 函数
实例 随机地打乱字符串中的所有字符: <?php高佣联盟 www.cgewang.comecho str_shuffle("Hello World");?> 定义和用法 ...
- Skill 脚本演示 ycBusNet.il
https://www.cnblogs.com/yeungchie/ ycBusNet.il 用于原理图中按照一定格式,批量创建 Bus . 回到目录
- SpringMVC文件上传下载(单文件、多文件)
前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...
- 5.5 省选模拟赛 B Permutation 构造 贪心
LINK:Permutation 对于这种构造神题 我自然是要补的.为啥就我没想出来哇. 30分还是很好写的 注意8!实际上很小 不需要爆搜 写bfs记录状态即可.至于判断状态是否出现与否 可以开ma ...
- luogu P5667 拉格朗日插值2 拉格朗日插值 多项式多点求值 NTT
LINK:P5667 拉格朗日插值2 给出了n个连续的取值的自变量的点值 求 f(m+1),f(m+2),...f(m+n). 如果我们直接把f这个函数给插值出来就变成了了多项式多点求值 这个难度好像 ...