第二十四届全国青少年信息学奥林区克联赛初赛
普及组
一、单项选择题
1、以下哪一种设备属于输出设备:() A 扫描仪 B 键盘 C 鼠标 D 打印机
2、下列四个不同进制的数中,与其他三项数值上不相等的是() A (269)_{16}(269)16 B (617)_{10}(617)10 C (1151)_{8}(1151)8
D (1001101011)_{2}(1001101011)2 3、11MB等于()
A 10001000字节 B 10241024字节
C 1000*10001000?1000字节 D 1024*10241024?1024字节 4、广域网的英文缩写是() A LAN B WAN C MAN D LNA
5、中国计算机协会于()年创办全国青少年计算机程序设计竞赛。 A 1983 B 1984 C 1985 D 1986
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
7、根节点深度为0,一棵深度为h的满K叉树,即除最后一层无任何子节点外,每一层上所有节点都有k个子节点的树,共有()个节点。 A (k^{h+1}-1)/(k-1)(kh+1?1)/(k?1) B k^{h-1}kh?1 C k^hkh
D (k^{h-1})/(k-1)(kh?1)/(k?1)
8、以下排序算法中,不需要进行关键字比较操作的算法是()。 A 基数排序 B 冒泡排序 C 堆排序
D 直接插入排序
9、给定一个含N个不相同数字的数组,在最坏情况下,找出期中最大或最小的树,至少需要N-1此操作。则最坏情况下,在该数组中同时找最大与最小的数至少需要()次操作。(\\lceil\\rceil??表示向上取整,\\lfloor\\rfloor??表示向下取整) A \\lceil3N/2\\rceil-2?3N/2??2 B \\lfloor3N/2\\rfloor-2?3N/2??2 C 2N-22N?2 D 2N-42N?4
10、下面的故事与()算法有异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事??’” A 枚举 B 递归 C 贪心 D 分治
11、由四个没有区别的点构成的简单无向连通图的个数是()。 A 6 B 7 C 8 D 9
12、设含有10个元素的集合的全部子集数为S,其中有7个元素组成的子集数为T,则T/S的值为()。 A 5/32 B 15/128 C 1/8 D 21/128
13、10000以内,与10000互质的正整数有()个。 A 2000 B 4000 C 6000 D 8000
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
15、下图中所使用的数据结构是:()。
A 哈希表 B 栈 C 队列 D 二叉树
二、问题求解
1、甲乙丙丁四人在考虑周末要不要外出郊游。 已知①如果周末下雨,并且乙不去,则甲一定不去 ②如果乙去,则丁一定去 ③如果丙去,则丁一定不去
④如果丁不去,而且甲不去,则丙一定不去 如果周末丙去了,则甲___(去了/没去), 乙___(去了/没去), 丁___(去了/没去), 周末___(下雨/没下雨)。
2、从1到2018这2018个数中,共有____个包含数字8的数。
三、阅读程序
1、
#include
char st[100]; int main(){
scanf(\
for(int i=0;st[i];++i){
if('A'<=st[i]&&st[i]<='Z') st[i]+=1; }
printf(\ return 0; }
输入:QuanGuoLianSai 输出:_____ 2、
#include
scanf(\ int res=0;
for(int i=0;i printf(\ return 0; } 输入:15 输出:__ 3、 #include 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< 输入:5 6 输出:____ 4、 #include scanf(\ for(int i=0;i int cnt=0; for(int i=0;i for(int j=i;!v[j];j=d[j]){ v[j]=true; } ++cnt; } } printf(\ return 0; } 输入:10 7 1 4 3 2 5 9 8 0 6 输出:_____ 四、完善程序 1、(最大公约数之和) 下列程序想要求解整数n的所有约数两两之间最大公约数的和对10007求余后的值,试补全程序。 举例来说,4的所有约数是1,2,4。1和2的最大公约数为1,2和4的最大公约数为2,1和4的最大公约数为1,于是答案为1+2+1=4 要求getDivisor函数的复杂度为O(\\sqrt{n})O(n),gcd函数的复杂度为O(log max(a,b))O(logmax(a,b)) #include const int N=110000,P=10007; int n; int a[N],len; int ans; void getDivisor(){ int len=0; for(int i=1;__(1)__;i++) if(n%i==0){ a[++len]=i;
相关推荐: