NOIP2018初赛普及组原题&题解
NOIP2018初赛普及组原题&题解
原题&答案
普及组C++
语言试题:
普及组答案:
题解
单项选择题
第\(1\)题
以下哪一种设备属于输出设备:( )
\(A.\text{扫描仪}\)
\(B.\text{键盘}\)
\(C.\text{鼠标}\)
\(D.\text{打印机}\)
答案:\(D\),打印机属于输出设备。
第\(2\)题
下列四个不同进制的数中,与其它三项数值上不相等的是( )。
\(A. (269)_{16}\)
\(B. (617)_{10}\)
\(C. (1151)_{8}\)
\(D. (1001101011)_{2}\)
答案:\(D\),计算。
第\(3\)题
\(1\text{MB}\)等于( )。
\(A. 1000 字节\)
\(B. 1024 字节\)
\(C. 1000 X 1000 字节\)
\(D. 1024 X 1024 字节\)
答案:\(D\),\(1\text{MB}=2^{20}\text{Byte}\)。
第\(4\)题
广域网的英文缩写是( )。
\(A. LAN\)
\(B. WAN\)
\(C. MAN\)
\(D. LNA\)
答案:\(B\),广域网(\(\text{Wide Area Network}\))的缩写是\(WAN\)。
第\(5\)题
中国计算机学会于( )年创办全国青少年计算机程序设计竞赛。
\(A. 1983\)
\(B. 1984\)
\(C. 1985\)
\(D. 1986\)
答案:\(B\),1984年***指出:“计算机的普及要从娃娃做起。”因此,教育部和中国科协委托中国计算机学会举办了全国青少年计算机程序设计竞赛。
第\(6\)题
如果开始时计算机处于*写输入状态,现在有一只*老鼠反复按照CapsLock
、字母键\(A\)、字母键\(S\)、字母键\(D\)、字母键\(F\)的顺序循环按键,即CapsLock、A、S、D、F、CapsLock、A、S、D、F、……
,屏幕上输出的第\(81\)个字符是字母( )。
\(A. A\)
\(B. S\)
\(C. D\)
\(D. a\)
答案:\(A\),模拟可得结果为\(A\)。
第\(7\)题
根节点深度为\(0\),一棵深度为\(h\)的满\(k(k>1)\)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有\(k\)个子结点的树,共有( )个结点。
\(A. (k^{h+1}-1)/(k-1)\)
\(B. k^{h-1}\)
\(C. k^{h}\)
\(D. (k^{h-1})/(k-1)\)
答案:\(A\):
根据推理得出总的节点数$$S=\sum{h}_{i=0}ki$$
再根据等比数列求和公式得:$$S=1\times\frac{1-q{n}}{1-q}=\frac{1-k{h+1}}{1-k}=\frac{k^{h+1}-1}{k-1},q=k$$。
第\(8\)题
以下排序算法中,不需要进行关键字比较操作的算法是( )。
\(A. 基数排序\)
\(B. 冒泡排序\)
\(C. 堆排序\)
\(D. 直接插入排序\)
答案:\(A\)。
第\(9\)题
给定一个含\(N\)个不相同数字的数组,在最坏情况下,找出其中最大或最*的数,至少需要\(N-1\)次比较操作。则最坏情况下,在该数组中同时找最大与最*的数至少需要( )次比较操作。(\(⌈ ⌉\)表示向上取整,\(⌊ ⌋\)表示向下取整)
\(A. ⌈3N / 2⌉ - 2\)
\(B. ⌊3N / 2⌋ - 2\)
\(C. 2N - 2\)
\(D. 2N - 4\)
答案:\(A\)。
第\(10\)题
下面的故事与( )算法有着异曲同工之妙。从前有座山,山里有座庙,庙里有个老和尚在给*和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给*和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给*和尚讲故事……’”
\(A. 枚举\)
\(B. 递归\)
\(C. 贪心\)
\(D. 分治\)
答案:\(B\)。
第\(11\)题
由四个没有区别的点构成的简单无向连通图的个数是( )。
\(A. 6\)
\(B. 7\)
\(C. 8\)
\(D. 9\)
答案:\(A\)。
如下:
第\(12\)题
设含有\(10\)个元素的集合的全部子集数为\(S\),其中由\(7\)个元素组成的子集数为\(T\),则\(T/S\)的值为( )。
\(A. 5 / 32\)
\(B. 15 / 128\)
\(C. 1 / 8\)
\(D. 21 / 128\)
答案:\(B\)。\(T=120,S=1024\)。
第\(13\)题
\(10000\)以内,与\(10000\)互质的正整数有( )个。
\(A. 2000\)
\(B. 4000\)
\(C. 6000\)
\(D. 8000\)
答案:\(B\)。
第\(14\)题
为了统计一个非负整数的二进制形式中 1 的个数,代码如下:
int CountBit(int x)
{
int ret = 0;
while (x)
{
ret++;
___________;
}
return ret;
}
则空格内要填入的语句是( )。
\(A. x>>1\)
\(B. x\&=x-1\)
\(C. x|=x>>1\)
\(D. x<<1\)
答案:\(B\)。
第\(15\)题
下图中所使用的数据结构是( )。
\(A. 哈希表\)
\(B. 栈\)
\(C. 队列\)
\(D. 二叉树\)
答案:\(B\)。
问题求解
第\(1\)题
甲乙丙丁四人在考虑周末要不要外出郊游。已知①如果周末下雨,并且乙不去,则甲一定不去;②如果乙去,则丁一定去;③如果丙去,则丁一定不去;④如果丁不去,而且甲不去,则丙一定不去。如果周末丙去了,则甲________(去了/没去),乙________(去了/没去),丁________(去了/没去),周末________(下雨/没下雨)。
因为丙去了,由③知:丁没去;
因为丁没去,由②知:乙没去;
因为丁没去,丙去了,由④知:甲去了;
因为甲去了,乙没去,由①知:周末没下雨;
第\(2\)题
从\(1\)到\(2018\)这\(2018\)个数中,共有__________个包含数字 8 的数。
\(544\)个。
阅读程序写结果
第\(1\)题
#include <cstdio>
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;
}
输入:QuanGuoLianSai
输出:_________
阅读程序可知,此程序的作用是:
- 将大写字母的
ASCII
码增加\(1\),如\(Q → R,G → H\); - 将*写字母或其他字符原样输出。
所以结果是:RuanHuoMianTai
第\(2\)题
#include <cstdio>
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;
}
输入:15
输出:_________
模拟可得:答案为\(4\)。
第\(3\)题
#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;
}
输入:5 6
输出:_________
模拟可得:答案为\(8\)
第\(4\)题
#include <cstdio>
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;
}
输入:10 7 1 4 3 2 5 9 8 0 6
输出:_________
模拟可得:答案为\(6\)
完善程序
第\(1\)题
(最大公约数之和)下列程序想要求解整数的所有约数两两之间最大公约数的和对\(10007\)求余后的值,试补全程序。(第一空 2 分,其余 3 分)
举例来说,\(4\)的所有约数是\(1,2,4\)。\(1\)和\(2\)的最大公约数为\(1\);\(2\)和\(4\)的最大公约数为\(2\);\(1\)和\(4\)的最大公约数为\(1\)。于是答案为\(1+2+1=4\)。
要求getDivisor
函数的复杂度为\(O(\sqrt{n})\),gcd
函数的复杂度为\(O(logmax(a,b))\)。
#include <iostream>
using namespace std;
const int N = 110000, P = 10007;
int n;
int a[N], len;
int ans;
void getDivisor() {
len = 0;
for (int i = 1; (1) <= n; ++i)
if (n % i == 0) {
a[++len] = i;
if ( (2) != i) a[++len] = n / i;
}
}
int gcd(int a, int b) {
if (b == 0) {
(3) ;
}
return gcd(b, (4) );
}
int main() {
cin >> n;
getDivisor();
ans = 0;
for (int i = 1; i <= len; ++i) {
for (int j = i + 1; j <= len; ++j) {
ans = ( (5) ) % P;
}
}
cout << ans << endl;
return 0;
}
答案:
- \(i*i\);枚举到\(\sqrt{n}\);
- \(n/i\);
- \(return a\);注意没有
;
- \(a\%b\);
- \(gcd(a[i],a[j])+ans\)
第\(2\)题
对于一个\(1\)到\(n\)的排列\(P\)(即\(1\)到\(n\)中每一个数在\(P\)中出现了恰好一次),令\(q_{i}\)为第\(i\)个位置之后第一个比\(P_{i}\)值更大的位置,如果不存在这样的位置,则\(q_{i}=n+1\)。
举例来说,如果\(n=5\)且\(P\)为\(1 5 4 2 3\),则\(q\)为\(2 6 6 5 6\)。
下列程序读入了排列\(P\),使用双向链表求解了答案。试补全程序。(第二空\(2\)分,其余\(3\)分)
数据范围\(1 \leq n \leq 10^{5}\)。
#include <iostream>
using namespace std;
const int N = 100010;
int n;
int L[N], R[N], a[N];
int main() {
cin >> n;
for (int i = 1; i <= n; ++i) {
int x;
cin >> x;
(1) ;
}
for (int i = 1; i <= n; ++i) {
R[i] = (2) ;
L[i] = i - 1;
}
for (int i = 1; i <= n; ++i) {
L[ (3) ] = L[a[i]];
R[L[a[i]]] = R[ (4) ];
}
for (int i = 1; i <= n; ++i) {
cout << (5) << " ";
}
cout << endl;
return 0;
}
答案:
- \(a[x]=i\)
- \(i+1\)
- \(R[a[i]]\)
- \(a[i]\)
- \(R[i]\)
全文完,如果您在文中发现了什么问题,欢迎提出。
NOIP2018初赛普及组原题&题解的更多相关文章
- noip2008普及组3题题解-rLq
(第一次写题解,随意喷) (只是前一天的作业哈) (先凑个数) 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈 ...
- noip2008普及组4题题解-rLq
(啊啊啊终于补到了今天的作业了) 本题地址:http://www.luogu.org/problem/show?pid=1058 题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣 ...
- [题解]NOIP2018(普及组)T1标题统计(title)
NOIP2018(普及组)T1标题统计(title) 题解 [代码(AC)] #include <iostream> #include <cstdio> #include &l ...
- 第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题
第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 1.原题呈现 2.试题答案 3.题目解析 因博客园无法打出公式等,所以给你们几个小编推荐的链接去看看,在这里小编深感抱歉! https ...
- 05:统计单词数【NOIP2011复赛普及组第二题】
05:统计单词数 总时间限制: 1000ms 内存限制: 65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
- NOIP2012 普及组真题 4.13校模拟
考试状态: 我今天抽签看了洛谷的… 这我能怂???凶中带吉,我怕考试??我!不!怕! 看着整个机房的男同学们,我明白我是不会触发我的忌了.很好,开刷. A. [NOIP2012普及组真题] 质因数分解 ...
- 纪中10日T1 2300. 【noip普及组第一题】模板题
2300. [noip普及组第一题]模板题 (File IO): input:template.in output:template.out 时间限制: 1000 ms 空间限制: 262144 K ...
- 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题
洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...
- 【总结】2022GDOI普及组试题与题解(缺两天的T4)
标签 2022 广东省选普及组 GDOI 试题 前往Luogu下载 Luogu下载:This Day1题解 T1 邹忌讽齐王纳谏 打卡题,建议模拟 建议使用map,时间复杂度为\(O(nlogn)\) ...
随机推荐
- jquery里面.length和.size()有什么区别
区别: 1.针对标签对象元素,比如数html页面有多少个段落元素<p></p>,那么此时的$("p").size()==$("p").l ...
- Day009 面向对象和方法回顾
面向过程&面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么..... 面象过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些 ...
- php笔记之魔术方法、魔法常量和超全局变量
一.魔术方法(13个)1.__construct()实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用.2.__destru ...
- 网络请求axios
axios的定义 axios是一个基于Promise,用于浏览器和node的HTTP客户端 axios的功能特点 在浏览器中发送 XMLHttpRsquests 请求 在node.js中发送http请 ...
- MySQL锁等待与死锁问题分析
前言: 在 MySQL 运维过程中,锁等待和死锁问题是令各位 DBA 及开发同学非常头痛的事.出现此类问题会造成业务回滚.卡顿等故障,特别是业务繁忙的系统,出现死锁问题后影响会更严重.本篇文章我们一起 ...
- C++ primer plus读书笔记——第13章 类继承
第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生 ...
- 面试遇到的坑JS深拷贝和浅拷贝
首先要搞明白深拷贝和钱拷贝的区别要先搞明白 栈和堆的区别 一.栈 栈存储基础数据类型,如: String.Number.Boolean.Null.Underined,这些简单的基础数据类型能够直接存储 ...
- [JavaScript之BOM与DOM]
[JavaScript之BOM与DOM] BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行"对话". DOM ( ...
- jekyll-admin的搭建和使用
通过jekyll搭建好了自己的博客.写博客成为了日常,经过一段时间的摸索,发现jekyll-admin是个好东西,它是博客的后台管理系统,可以方便的管理和编写自己的博客 安装 运行命令gem inst ...
- micro 从cli的tag中获取配置
官方文档: https://micro.mu/docs/go-config.html https://github.com/micro/go-micro/tree/master/config/sour ...