历年noip普与组(c)完善程序题总结归纳
- 格式:docx
- 大小:29.71 KB
- 文档页数:20
完善程序题总结归纳By:七(6) yx一、【题目】(哥德巴赫猜想)哥德巴赫猜想是指,任一大于2的偶数都可写成两个质数之和。
迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。
试编写程序,验证任一大于2且不超过n的偶数都能写成两个质数之和。
#include<iostream>using namespace std;int main(){const int SIZE=1000;int n,r,p[SIZE],i,j,k,ans;bool tmp;cin>>n;r=1;p[1]=2;for(i=3;i<=n;i++){①;for(j=1;j<=r;j++)if(i% ②==0){tmp=false;break;}if(tmp){r++;③;}}ans=0;for(i=2;i<=n/2;i++){tmp=false;for(j=1;j<=r;j++)for(k=j;k<=r;k++)if(i+i== ④ ){tmp=true;break;}if(tmp)ans++;}cout<<ans<<endl;return 0;}若输入n为2010,则输出⑤时表示验证成功,即大于2且不超过2010的偶数都满足哥德巴赫猜想。
【算法】先for一遍,找出质数,然后对每一个偶数进行一一匹配(2除外),效率O(n^3)【代码】1、tmp=1;2、p[j];3、p[r]=j;4、p[j]+p[k]5、1004【年份】2010年二、【题目】(过河问题) 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在伸手不见五指的黑夜里,过桥时必须借照灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最多能承受两个人同时经过,否则将会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同.两个人一起过独木桥时,由于只有一盏灯,所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入N(2<=N<1000)和这N个人单独过桥需要的时间,请计算总共最少需要多少时间,他们才能全部到达河左岸.例如,有3个人甲、乙、丙,他们单独过桥的时间分别为1、2、4,则总共最少需要的时间为7.具体方法是:甲、乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回,然后甲、丙在一起过桥到河的左岸,总时间为2+1+4=7.#include<iostream>#include<cstring>using namespace std;const int size=100;const int infinity = 10000;const bool left=1;const bool right =0;const bool left_to_right=1;const bool right_to_left=0;int n,hour[size];bool pos[size];int max(int a,int b){return a>b?a:b;}int go(bool stage){int i,j,num,tmp,ans;if(stage==right_to_left){num=0;ans=0;for(i=1;i<=n;i++)if(pos[i]==right){num++;if( hour[i]>ans)ans=hour[i];}if( ① )return ans;ans=infinity;for(i=1;i<=n-1;i++)if(pos[i]==right)for(j=i+1;j<=n;j++)if(pos[j]==right){pos[i]=left;pos[j]=left;tmp=max(hour[i],hour[j])+ ②; if(tmp<ans)ans=tmp;pos[i]=right;pos[j]=right;}return ans;}if(stage==left_to_right){ans=infinity;for(i=1;i<=n;i++)if( ③ ){pos[i]=right;tmp= ④ ;if(tmp<ans)ans=tmp;⑤;}return ans;}return 0;}int main(){int i;cin>>n;for(i=1;i<=n;i++){cin>>hour[i];pos[i]=right;}cout<<go[right_to_left)<<endl;return 0;}【算法】利用深搜,左右交替寻找最优解(maybe是动态规划)【代码】1、num<=2;2、go[1];3、pos[j]==1;4、hour[i]+go[0];5、pos[i]=1;【年份】2010年三、【题目】(子矩阵)给输入一个n1*m1的矩阵a,和n2*m2的矩阵b,问a中是否存在子矩阵和b相等。
第十九届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间: 2013 年 10 月 13 日 14:30~16:30选手注意:试题纸共有9 页,答题纸共有 2 页,满分 100 分。
请在答题纸上作答,写在试题纸上的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20 题,每题 1.5 分,共计 30 分;每题有且仅有一个正确选项)1. 一个 32 位整型变量占用()个字节。
A. 4B. 8C. 32D. 1282. 二进制数 11.01 在十进制下是()。
A. 3.25B. 4.125C. 6.25D. 11.1253. 下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’A. 枚举B. 递归C. 贪心D. 分治4. 逻辑表达式()的值与变量A 的真假无关。
A. (A ∨ B) ∧﹃AB. (A ∨ B) ∧﹃BC. (A ∧ B) ∨ (﹃ A ∧ B)D. (A ∨ B) ∧﹃A ∧ B5. 将( 2, 6, 10, 17)分别存储到某个地址区间为0~10 的哈希表中,如果哈希函数h(x) = (),将不会产生冲突,其中a mod b 表示 a 除以 b 的余数。
A. x mod 11B. x2 mod 11C. 2x mod 11D. |√2| mod 11 ,其中√X表示√X下取整6. 在十六进制表示法中,字母 A 相当于十进制中的()。
A. 9B. 10C. 15D. 167. 下图中所使用的数据结构是()。
A. 哈希表B. 栈C. 队列D. 二叉树8. 在 Windows 资源管理器中,用鼠标右键单击一个文件时,会出现一个名为“复制”的操作选项,它的意思是()。
A. 用剪切板中的文件替换该文件B. 在该文件所在文件夹中,将该文件克隆一份C. 将该文件复制到剪切板,并保留原文件D. 将该文件复制到剪切板,并删除原文件9. 已知一棵二叉树有10 个节点,则其中至多有()个节点有 2 个子节点。
第十二届全国青少年信息学奥林匹克联赛初赛试题 2006(普及组C++ 语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共20题,每题1.5分,共计30分。
每题有且仅有一个正确答案.)1. 在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是()。
A. 沃尔夫奖B. 诺贝尔奖C. 菲尔兹奖D. 图灵奖2. 在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有()。
A. gcc/g++B. Turbo PascalC. RHIDED. free pascal3. 以下断电之后仍能保存数据的有()。
A. 寄存器B. ROMC. RAMD. 高速缓存4.Linux是一种( )。
A. 绘图软件B. 程序设计语言C. 操作系统D. 网络浏览器5. CPU是( )的简称。
A. 硬盘B. 中央处理器C. 高级程序语言D. 核心寄存器6. 在计算机中,防火墙的作用是()。
A. 防止火灾蔓延B.防止网络攻击C. 防止计算机死机D. 防止使用者误删除数据7. 在下列关于计算机语言的说法中,不正确的是()。
A. Pascal和C都是编译执行的高级语言B. 高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上C. C++是历史上的第一个支持面向对象的计算机语言D. 与汇编语言相比,高级语言程序更容易阅读8. 在下列关于计算机算法的说法中,不正确的是()。
A. 一个正确的算法至少要有一个输入B. 算法的改进,在很大程度上推动了计算机科学与技术的进步C. 判断一个算法的好坏的主要标准是算法的时间复杂性与空间复杂性D. 目前仍然存在许多涉及到国计民生的重大课题,还没有找到能够在计算机上实施的有效算法9. 在下列各种排序算法中,不是以“比较”作为主要操作的算法是()。
A. 选择排序B. 冒泡排序C. 插入排序D. 基数排序10.在编程时(使用任一种高级语言,不一定是C++),如果需要从磁盘文件中输入一个很大的二维数组(例如1000*1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上()。
第十二届全国青青年信息学奥林匹克联赛初赛试题2006(普及组C++ 语言二小时完成)●●全数试题答案均要求写在答卷纸上,写在试卷纸上一概无效●●一、单项选择题(共20题,每题分,共计30分。
每题有且仅有一个正确答案.)1. 在下面各世界顶级的奖项中,为运算机科学与技术领域做出杰出奉献的科学家设立的奖项是()。
A. 沃尔夫奖B. 诺贝尔奖C. 菲尔兹奖D. 图灵奖2. 在以下各软件中,不属于NOIP竞赛(复赛)推荐利用的语言环境有()。
A. gcc/g++B. Turbo PascalC. RHIDED. free pascal3. 以下断电以后仍能保留数据的有()。
A. 寄放器B. ROMC. RAMD. 高速缓存4.Linux是一种( )。
A. 画图软件B. 程序设计语言C. 操作系统D. 网络阅读器5. CPU是( )的简称。
A. 硬盘B. 中央处置器C. 高级程序语言D. 核心寄放器6. 在运算机中,防火墙的作用是()。
A. 幸免火灾蔓延B.幸免网络解决C. 幸免运算机死机D. 幸免利用者误删除数据7. 在以下关于运算机语言的说法中,不正确的选项是()。
A. Pascal和C都是编译执行的高级语言B. 高级语言程序比汇编语言程序更易从一种运算机移植到另一种运算机上C. C++是历史上的第一个支持面向对象的运算机语言D. 与汇编语言相较,高级语言程序更易阅读8. 在以下关于运算机算法的说法中,不正确的选项是()。
A. 一个正确的算法至少要有一个输入B. 算法的改良,在专门大程度上推动了运算机科学与技术的进步C. 判定一个算法的好坏的要紧标准是算法的时刻复杂性与空间复杂性D. 目前仍然存在许多涉及到国计民生的重大课题,尚未找到能够在运算机上实施的有效算法9. 在以下各类排序算法中,不是以“比较”作为要紧操作的算法是()。
A. 选择排序B. 冒泡排序C. 插入排序D. 基数排序10.在编程时(利用任一种高级语言,没必要然是C++),假设是需要从磁盘文件中输入一个专门大的二维数组(例如1000*1000的double型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相较,在输入效率上()。
第十届全国青少年信息学奥林匹克联赛初赛试题2005(普及组C 语言二小时完成)• •全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效•• 一.选择一个正确答案代码( A/B/C/D/E ),填入每题的括号内(每题1.5分,共30分)1. 在字符串"ababacbabcbdecced ”中出现次数最多的字母出现了()次。
A.6B.5C.4D.3E.2 2. 设全集 l={a,b,c,d,e,f,g,h} ()。
A.{c,e}B.{d,e}C.{e}D.{c,d,e}E.{d,f} 3. 和十进制数23的值相等的二进制数是()。
A.10110B.11011C.11011D.10111E.10011 4. 完全二叉树的结点个数为11,则它的叶结点个数为()。
A.4B.3C.5D.2E.6 5. 平面上有五个点A (5,3),B (3,5),C (2,1),D (3,3),E (5,1)。
以这五点作为完全图 G 的顶点,每两点之间的 直线距离是图G 中对应边的权值。
以下哪条边不是图 G 的最小生成树中的边()。
A.AD6.Intel 的首颗16位处理器是()。
A.80887. 处理器A 每秒处理的指令数是处理器 B 的2倍。
某一特定程序 P 分别编译为处理器 A 和处理器B 的指令,编 译结果处理器A 的指令数是处理器B 的 4倍。
已知程序P 在处理器A 上执行需要1个小时,那么在输入相同的 情况下,程序P 在处理器B 上执行需要()小时。
A.4B.2C.1D.1/2E.1/4 8.以下哪个不是计算机的输出设备()。
A.音箱 B.显示器 C.打印机 D.扫描仪 E.绘图仪 9. 下列活动中不属于信息学奥赛的系列活动的是()。
A.NOIPB.NOIC.IOID.冬令营E.程序员等级考试 10. 以下断电之后仍能保存数据的是()。
A.硬盘B.寄存器C.显存D.内存E.高速缓存 11. 以下哪个软件不是即时通信软件()。
第二十二届全国青少年信息学奥林匹克联赛初赛普及组 C++语言试题竞赛时间:2016 年 10 月 22 日 14:30~16:30选手注意:试题纸共有 9 页,答题纸共有 2 页,满分 100 分。
请在答题纸上作答,写在试题纸上的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)1.以下不是微软公司出品的软件是()。
A. Powerpoint B. WordC. Excel D. Acrobat Reader2. 如果 256 种颜色用二进制编码来表示,至少需要()位。
A. 6 B. 7 C. 8 D. 93.以下不属于无线通信技术的是()。
A. 蓝牙 B. WiFi C. GPRS D. 以太网4. 以下不是 CPU 生产厂商的是()。
D. IBMA. Intel B. AMD C. Microsoft5. 以下不是存储设备的是()。
D. 鼠标A. 光盘 B. 磁盘 C. 固态硬盘6.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键 A、字母键 S 和字母键 D 的顺序循环按键,即 CapsLock、A、S、D、CapsLock、A、S、D、……,屏幕上输出的第 81 个字符是字母()。
A. A B. S C. D D. a7. 二进制数 00101100 和 00010101 的和是()。
A. 00101000 B. 01000001 C. 01000100 D. 001110008. 与二进制小数 0.1 相等的八进制数是()。
D. 0.1A. 0.8 B. 0.4 C. 0. 2CCF NOIP2016 初赛普及组 C++语言试题第 1 页,共 9 页9. 以下是 32 位机器和 64 位机器的区别的是()。
A. 显示器不同 B. 硬盘大小不同C. 寻址空间不同 D. 输入法不同10. 以下关于字符串的判定语句中正确的是()。
NOIP普及组历届试题分析简介全国青少年信息学奥林匹克竞赛(National Olympiad in Informatics in Provinces,简称NOIP)是由教育部主管的我国重要的计算机竞赛之一,也是继数学、物理、化学等奥赛之后的第五个奥赛竞赛科目。
NOIP的目的是为了提高初、高中学生计算机编程能力,培养计算机及其应用等方面人才,推动计算机教学与应用的发展。
NOIP由普及组和提高组组成,普及组适合初学者,困难系数逐年递增,试题越来越难。
本文将以普及组历届试题为主,对试题进行分析,帮助初学者更好地掌握NOIP的难点和解题方法。
历届试题分析2021年2021年普及组共3道试题,分别为:•普及组-1:数论题目,给定两个数n和m,求出从1到n中可以被m整除的数的个数。
•普及组-2:暴力枚举题目,给定一个长度为n的整型数组a,请计算其中有多少个子序列满足其中的元素逆序对数量恰好等于k序列中逆序对数量的个数。
•普及组-3:贪心算法题目,有n个维度相同的矩形,每个矩形的左上和右下两个点坐标都已知,请问从这些矩形中能够组成的最大矩形的面积是多少。
,2021年的普及组试题难度适中,各个题目的知识点都不难掌握,但需要提高思维能力和编程能力。
2020年2020年普及组共3道试题,分别为:•普及组-1:模拟题目,给定一些操作,包括插入、删除、查询等操作,让我们实现对一个序列的操作。
•普及组-2:搜索算法题目,有n个物品和一个容量为v的背包,每个物品有重量w和价值c两个属性,要求将物品装入背包中,使得背包中物品的总价值最大,输出最大价值。
•普及组-3:排序算法题目,给定n个三元组(a,b,w),要求将三元组按照a从小到大、b从小到大排序,如果a和b相等,则按照w从小到大排序。
,2020年的普及组试题相对较简单,难度偏低,但需要细致的思考和编程能力。
2019年2019年普及组共3道试题,分别为:•普及组-1:分支结构和循环结构的题目,输入一个字符串,输出字符串中包含的大写字母、小写字母、数字和空格的个数。
n o i p初赛普及组c试题及答案文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]第十届全国青少年信息学奥林匹克联赛初赛试题(普及组C语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分,共30分)1.美籍匈牙利数学家冯·诺依曼对计算机科学发展所做出的贡献是()。
A.提出理想计算机的数学模型,成为计算机科学的理论基础。
B.是世界上第一个编写计算机程序的人。
C.提出存储程序工作原理,并设计出第一台具有存储程序功能的计算机EDVAC。
D.采用集成电路作为计算机的主要功能部件。
E.指出计算机性能将以每两年翻一番的速度向前发展。
2.下列哪个不是CPU(中央处理单元)()。
A.IntelItaniumB.DDRSDRAMC.AMDAthlon64D.AMDOpteronE.IBMPower53.下列网络上常用的名字缩写对应的中文解释错误的是()。
A.WWW(WorldWideWeb):万维网。
B.URL(UniformResourceLocator):统一资源定位器。
C.HTTP(HypertextTransferProtocol):超文本传输协议。
D.FTP(FileTransferProtocol):快速传输协议。
E.TCP(TransferControlProtocol):传输控制协议。
4.下面哪个部件对于个人桌面电脑的正常运行不是必需的()。
A.CPUB.图形卡(显卡)C.光驱D.主板E.内存5.下列哪个软件属于操作系统软件()。
A.MicrosoftWordB.金山词霸C.FoxmailD.WinRARE.RedHatLinux6.下列哪个不是计算机的存储设备()。
A.文件管理器B.内存C.高速缓存D.硬盘E.U盘7.下列说法中错误的是()。
A.CPU的基本功能就是执行指令。
完善程序题总结归纳By :七( 6 ) yx一、【题目】(哥德巴赫猜想)哥德巴赫猜想是指,任一大于2 的偶数都可写成两个质数之和。
迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。
试编写程序,验证任一大于 2 且不超过n 的偶数都能写成两个质数之和。
#include<iostream>using namespace std;int main(){const int SIZE=1000;int n,r,p[SIZE],i,j,k,ans;bool tmp;cin>>n;r=1;p[1]=2;for(i=3;i<=n;i++){①;for(j=1;j<=r;j++)if(i% ② ==0){tmp=false;break;}if(tmp){r++;③;}}ans=0;for(i=2;i<=n/2;i++){tmp=false;for(j=1;j<=r;j++) for(k=j;k<=r;k++)if(i+i== ④ ){tmp=true;break;}if(tmp)ans++;}cout<<ans<<endl;return 0;}若输入n 为2010 ,则输出⑤ 时表示验证成功,即大于 2 且不超过2010 的偶数都满足哥德巴赫猜想。
【算法】先for 一遍,找出质数,然后对每一个偶数进行一一匹配(2 除外),效率O (n^3 )【代码】1、tmp=1 ;2 、p[j];3 、p[r]=j;4 、p[j]+p[k]5 、1004【年份】2010 年二、【题目】(过河问题)在一个月黑风高的夜晚,有一群人在河的右岸, 想通过唯一的一根独木桥走到河的左岸.在伸手不见五指的黑夜里,过桥时必须借照灯光来照明, 不幸的是, 他们只有一盏灯.另外,独木桥上最多能承受两个人同时经过,否则将会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同. 两个人一起过独木桥时,由于只有一盏灯, 所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入N(2<=N<1000)和这N 个人单独过桥需要的时间,请计算总共最少需要多少时间, 他们才能全部到达河左岸.例如,有3个人甲、乙、丙,他们单独过桥的时间分别为1、2 、4,则总共最少需要的时间为7. 具体方法是:甲、乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回, 然后甲、丙在一起过桥到河的左岸,总时间为2+1+4=7.#include<iostream>#include<cstring>using namespace std;const int size=100;const int infinity = 10000;const bool left=1;const bool right =0;const bool left_to_right=1;const bool right_to_left=0;int n,hour[size];bool pos[size];int max(int a,int b){return a>b?a:b;}int go(bool stage){int i,j,num,tmp,ans;if(stage==right_to_left){num=0;ans=0;for(i=1;i<=n;i++)if(pos[i]==right){num++;if( hour[i]>ans) ans=hour[i];}if( ① )return ans;ans=infinity;for(i=1;i<=n-1;i++)if(pos[i]==right)for(j=i+1;j<=n;j++)if(pos[j]==right){pos[i]=left;pos[j]=left;tmp=max(hour[i],hour[j])+ if(tmp<ans)ans=tmp;pos[i]=right;pos[j]=right;return ans;}if(stage==left_to_right){ans=infinity;for(i=1;i<=n;i++)if( ③ ) {pos[i]=right;tmp= ④if(tmp<ans)ans=tmp;⑤;}return ans;}return 0;}int main(){int i;cin>>n;for(i=1;i<=n;i++){cin>>hour[i];pos[i]=right;}cout<<go[right_to_left)<<endl;return 0;}【算法】利用深搜,左右交替寻找最优解(maybe 是动态规划)【代码】1 、num<=2;2 、go[1];3 、pos[j]==1;4、hour[i]+go[0];5 、pos[i]=1;【年份】2010 年三、【题目】(子矩阵) 给输入一个n1*m1 的矩阵a,和n2*m2 的矩阵b , b 相等。
noip知识点总结一、基础知识1.1 编程语言在NOIP竞赛中,C++是使用最广泛的编程语言。
学生们需要熟练掌握C++的语法规则、标准库函数等知识,并且能够灵活运用到实际的编程中。
此外,对于一些特殊的编程语言特性,如引用、指针、模板等,也需要进行深入的理解。
1.2 基本算法在算法方面,学生们需要熟练掌握一些基本的算法,如排序、查找、递归、分治、贪心等算法。
这些算法是解决问题的基础,对于NOIP竞赛中的编程题目非常重要。
二、数据结构2.1 数组数组是最基本的数据结构之一,学生们需要熟练掌握数组的定义、初始化、访问、遍历等操作。
此外,对于数组的一些高级应用,如前缀和、差分数组、二分查找等,也需要进行深入的理解和掌握。
2.2 队列和栈队列和栈是常用的线性数据结构,学生们需要了解它们的基本概念、操作以及应用场景。
对于队列和栈的实现,学生们也需要掌握数组和链表两种不同的实现方式,并且能够熟练应用。
2.3 链表链表是另一种常见的线性数据结构,学生们需要了解链表的定义、操作和实现方式。
对于链表结构的应用和高级算法,如快慢指针、反转链表、环形链表等,也需要进行深入的掌握。
2.4 树树是一种重要的非线性数据结构,学生们需要了解树的基本概念、遍历方式、实现方式等。
此外,对于树的一些高级应用和算法,如二叉搜索树、堆、并查集等,也需要进行深入的理解和掌握。
三、算法3.1 递归和迭代递归和迭代是解决问题的两种常用方式,学生们需要在实际编程中熟练应用这两种方法,并且能够根据具体问题的特点选择合适的解决方案。
此外,对于递归和迭代的性能分析和优化也需要进行深入的理解。
3.2 分治和回溯分治和回溯是另外两种重要的算法思想,学生们需要了解它们的基本概念和应用场景,并且能够熟练应用到实际的编程中。
对于这两种算法思想的高级应用和优化,也需要进行深入的掌握。
3.3 动态规划动态规划是解决问题的一种常用方法,学生们需要深入理解动态规划的基本原理和解题思路,并且能够独立分析和解决动态规划类型的题目。
第二十一届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2015 年10 月11 日14:30-16:30一、单项选择题(共20 题,每题1.5 分,共计30 分;每题有且仅有一个正确选项)1. 1MB 等于( )。
A.10000 字节B.1024 字节C.1000×1000 字节D.1024×1024 字节2.在 PC 机中,PENTIUM(奔腾)、酷睿、赛扬等是指( )。
A.生产厂家名称B.硬盘的型号C.CPU 的型号D.显示器的型号3.操作系统的作用是( )。
A.把源程序译成目标程序B.便于进行数据管理C.控制和管理系统资源D.实现硬件之间的连接4.在计算机内部用来传送、存贮、加工处理的数据或指令都是以( )形式进行的。
A.二进制码B.八进制码C.十进制码D.智能拼音码5.下列说法正确的是( )。
A.CPU 的主要任务是执行数据运算和程序控制B.存储器具有记忆能力,其中信息任何时候都不会丢失C.两个显示器屏幕尺寸相同,则它们的分辨率必定相同D.个人用户只能使用 Wifi 的方式连接到 Internet6.二进制数 00100100 和 00010100 的和是( )。
A.00101000B.01100111C.0100010D.001110007.与二进制小数 0.1 相等的十六进制数是( )。
A.0.8B.0.4C.0.2D.0.18.所谓的“中断”是指( )。
A.操作系统随意停止一个程序的运行B.当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况的过程C.因停机而停止一个程序的运行D.电脑死机9.计算机病毒是( )。
A.通过计算机传播的危害人体健康的一种病毒B.人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合C.一种由于计算机元器件老化而产生的对生态环境有害的物质D.利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒10.FTP 可以用于( )。
noip复赛总结归纳(2010至2015年c++普及组复赛试题)一、【题目】1.数字统计(two.pas/c/cpp)【问题描述】请统计某个给定范围[L, R]的所有整数中,数字2 出现的次数。
比如给定范围[2, 22],数字2 在数2 中出现了1 次,在数12 中出现1 次,在数20 中出现1 次,在数21 中出现1 次,在数22 中出现2 次,所以数字2 在该范围内一共出现了6次。
【输入】输入文件名为two.in。
输入共1 行,为两个正整数L 和R,之间用一个空格隔开。
【输出】输出文件名为two.out。
输出共1 行,表示数字2 出现的次数。
【输入输出样例1】two.in two.out2 22 6【输入输出样例2】two.in two.out2 100 20【数据范围】1 ≤ L ≤ R≤ 10000。
【算法】把每一位分出来,一一判断【代码】#include<cstdio>using namespace std;int main(){int r,l,ans=0;scanf("%d%d",&r,&l);for(int i=r;i<=l;i++)//一一判断{int num=i;while(num>0)//把每一位分离{if(num%10==2)ans++;num/=10;}}printf("%d",ans);return 0;}【年份】2010二、【题目】2.接水问题(water.pas/c/cpp)【问题描述】学校里有一个水房,水房里一共装有m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。
现在有n 名同学准备接水,他们的初始接水顺序已经确定。
将这些同学按接水顺序从1到n 编号,i 号同学的接水量为wi。
接水开始时,1 到m 号同学各占一个水龙头,并同时打开水龙头接水。
当其中某名同学j 完成其接水量要求wj 后,下一名排队等候接水的同学k马上接替j 同学的位置开始接水。
N O I P初赛普及组C试题及答案集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)第二十三届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2017年10月14日14:30~16:30选手注意:●试题纸共有7页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)1.在8表示的数是十进制下的()。
A.43B.-85C.-43D.-842.计算机存储数据的基本单位是()。
A.bitB.ByteC.GBD.KB3.下列协议中与电子邮件无关的是()。
A.POP3B.SMTPC.WTOD.IMAP4.分辨率为800x600、16位色的位图,存储图像信息所需的空间为()。
A.937.5KBB.4218.75KBC.4320KBD.2880KB5.计算机应用的最早领域是()。
A.数值计算B.人工智能C.机器人D.过程控制6.下列不属于面向对象程序设计语言的是()。
A.CB.C++C.JavaD.C#7.NOI的中文意思是()。
A.中国信息学联赛B.全国青少年信息学奥林匹克竞赛C.中国青少年信息学奥林匹克竞赛D.中国计算机协会8.2017年10月1日是星期日,1999年10月1日是()。
A.星期三B.星期日C.星期五D.星期二9.甲、乙、丙三位同学选修课程,从4门课程中,甲选修2门,乙、丙各选修3门,则不同的选修方案共有()种。
A.36B.48C.96D.19210.设G是有n个结点、m条边(n≤m)的连通图,必须删去G的()条边,才能使得G变成一棵树。
A.m–n+1B.m-nC.m+n+1D.n–m+111.对于给定的序列{ak},我们把(i,j)称为逆序对当且仅当i<j且ai>aj。
完善程序题总结归纳By:七(6)yx一、【题目】(哥德巴赫猜想)哥德巴赫猜想是指,任一大于2的偶数都可写成两个质数之和。
迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。
试编写程序,验证任一大于2且不超过n的偶数都能写成两个质数之和。
#include<iostream>using namespace std;int main(){const int SIZE=1000;int n,r,p[SIZE],i,j,k,ans;bool tmp;cin>>n;r=1;p[1]=2;for(i=3;i<=n;i++){①;for(j=1;j<=r;j++)if(i% ②==0){tmp=false;break;}if(tmp){r++;③;}}ans=0;for(i=2;i<=n/2;i++){tmp=false;for(j=1;j<=r;j++)for(k=j;k<=r;k++)if(i+i== ④){tmp=true;break;}if(tmp)ans++;}cout<<ans<<endl;return 0;}若输入n为2010,则输出⑤时表示验证成功,即大于2且不超过2010的偶数都满足哥德巴赫猜想。
【算法】先for一遍,找出质数,然后对每一个偶数进行一一匹配(2除外),效率O(n^3)【代码】1、tmp=1;2、p[j];3、p[r]=j;4、p[j]+p[k]5、1004 【年份】2010年二、【题目】(过河问题) 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在伸手不见五指的黑夜里,过桥时必须借照灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最多能承受两个人同时经过,否则将会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同.两个人一起过独木桥时,由于只有一盏灯,所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入N(2<=N<1000)和这N个人单独过桥需要的时间,请计算总共最少需要多少时间,他们才能全部到达河左岸.例如,有3个人甲、乙、丙,他们单独过桥的时间分别为1、2、4,则总共最少需要的时间为7.具体方法是:甲、乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回,然后甲、丙在一起过桥到河的左岸,总时间为2+1+4=7.#include<iostream>#include<cstring>using namespace std;const int size=100;const int infinity = 10000;const bool left=1;const bool right =0;const bool left_to_right=1;const bool right_to_left=0;int n,hour[size];bool pos[size];int max(int a,int b){return a>b?a:b;}int go(bool stage){int i,j,num,tmp,ans;if(stage==right_to_left){num=0;ans=0;for(i=1;i<=n;i++)if(pos[i]==right){num++;if( hour[i]>ans)ans=hour[i];}if( ①)return ans;ans=infinity;for(i=1;i<=n-1;i++)if(pos[i]==right)for(j=i+1;j<=n;j++)if(pos[j]==right){pos[i]=left;pos[j]=left;tmp=max(hour[i],hour[j])+ ②;if(tmp<ans)ans=tmp;pos[i]=right;pos[j]=right;}return ans;}if(stage==left_to_right){ans=infinity;for(i=1;i<=n;i++)if( ③){pos[i]=right;tmp= ④;if(tmp<ans)ans=tmp;⑤;}return ans;}return 0;}int main(){int i;cin>>n;for(i=1;i<=n;i++){cin>>hour[i];pos[i]=right;}cout<<go[right_to_left)<<endl;return 0;}【算法】利用深搜,左右交替寻找最优解(maybe是动态规划)【代码】1、num<=2;2、go[1];3、pos[j]==1;4、hour[i]+go[0];5、pos[i]=1;【年份】2010年三、【题目】(子矩阵)给输入一个n1*m1的矩阵a,和n2*m2的矩阵b,问a中是否存在子矩阵和b相等。
若存在,输出所有子矩阵左上角的坐标:若不存在输出“There isno answer”。
#include<iostream>using namespace std;const int SIZE = 50;int n1,m1,n2,m2,a[SIZE][SIZE],b[SIZE][SIZE];int main(){int i,j,k1,k2;bool good,haveAns;cin>>n1>>m1;for(i=1;i<=n1;i++)for(j=1;j<=m1;j++)cin>>a[i][j];cin>>n2>>m2;for(i=1;i<=n2;i++)for(j=1;j<=m2;j++)①;haveAns=false;for(i=1;i<=n1-n2+1;i++)for(j=1;j<=②;j++){③;for(k1=1;k1<=n2;k1++)for(k2=1;k2<=④;k2++){if(a[i+k1-1][j+k2-1]!=b[k1][k2])good=false;}if(good){cout<<i<<' '<<j<<endl;⑤;}}if(!haveAns)cout<<"There is no answer"<<endl;return 0;}【算法】枚举每一条对角线,进行判断。
【代码】1、cin>>b[i][j];2、m1-m2+1;3、good=1;4、m2;5、haveAns=1;【年份】2011年四、【题目】(大整数开方)输入一个正整数n(1≤n≤10100),试用二分法计算它的平方根的整数部分。
#include<iostream>#include<string>using namespace std;const int SIZE=200;struct hugeint{int len,num[SIZE];};//其中len表示大整数的位数;num[1]表示个位,num[2]表示十位,以此类推hugeint times(hugeint a,hugeint b)// 计算大整数a和b的乘积{int i,j;hugeint ans;memset(ans.num,0,sizeof(ans.num));for(i=1;i<=a.len;i++)for(j=1;j<=b.len;j++)①+=a.num[i]*b.num[j];for(i=1;i<=a.len+b.len;i++){ans.num[i+1]+=ans.num[i]/10;②;}if(ans.num[a.len+b.len]>0)ans.len=a.len+b.len;elseans.len=a.len+b.len-1;return ans;}hugeint add(hugeint a,hugeint b)//计算大整数a和b 的和{int i;hugeint ans;memset(ans.num,0,sizeof(ans.num));if(a.len>b.len)ans.len=a.len;elseans.len=b.len;for(i=1;i<=ans.len;i++){ans.num[i]+= ③;ans.num[i+1]+= ans.num[i]/10;ans.num[i]%=10;}if(ans.num[ans.len+1]>0)ans.len++;return ans;}hugeint average(hugeint a,hugeint b)//计算大整数a和b的平均数的整数部分{int i;hugeint ans;ans=add(a,b);for(i=ans.len;i>=2;i--){ans.num[i-1]+=( ④)*10;ans.num[i]/=2;}ans.num[1]/=2;if(ans.num[ans.len]==0)ans.len--;return ans;}hugeint plustwo(hugeint a)// 计算大整数a加2之后的结果{int i;hugeint ans;ans=a;ans.num[1]+=2;i=1;while( (i<=ans.len)&&(ans.num[i]>=10) ){ ans.num[i+1]+=ans.num[i]/10;ans.num[i]%=10;i++;}if(ans.num[ans.len+1]>0)⑤;return ans;}bool over(hugeint a,hugeint b)// 若大整数a>b则返回true,否则返回false {int i;if( ⑥)return false;if( a.len>b.len )return true;for(i=a.len;i>=1;i--){if(a.num[i]<b.num[i])return false;if(a.num[i]>b.num[i])return true;}return false;}int main(){string s;int i;hugeint target,left,middle,right;cin>>s;memset(target.num,0,sizeof(target.num));target.len=s.length();for(i=1;i<=target.len;i++)target.num[i]=s[target.len-i]- ⑦;memset(left.num,0,sizeof(left.num));left.len=1;left.num[1]=1;right=target;do{middle=average(left,right);if(over( ⑧))right=middle;elseleft=middle;}while(!over(plustwo(left),right) );for(i=left.len;i>=1;i--)cout<<left.num[i];return 0;}【算法】每二分一次,就判断一下答案在哪个区间,然后在那个区间继续二分,避免不必要的计算。