33老师第一时间出的2018NOIP普及组初赛题解!
大家应该都考完试,回到家吃完饭啦~同学们辛苦啦!
废话少说,答案先奉上!
今年普及组题型有了变动,选择题由20*1.5变成了15*2。每一题的分值更大了,今年考的又有点偏门,选择题失分可能会比较多。
然后完善程序两题考了比较偏门的知识,导致成绩出来后哀嚎一片。第二三大题倒是中规中矩。我们一部分一部分来看。
选择题
1.1 D 打印出来文稿也算是输出了信息,所以打印机为输出设备
1.2 D 基础的进制转换问题,都换成统一进制就好啦!
1.3 D 原来有考过的类似问题,1MB=1024KB=1024*1024B
1.4 B 这里的W就是Wide啦,看看家里路由器接到外部网络的口子上一定写了一个W
1.5 B 这题就是一个很偏门的知识了,可难背了,没选对也没有关系哟!
1.6 A 这题原来有考过类似的问题哟!这次循环结换成四个一循环了,耐心算算余数即可~
1.7 A 满二叉树我们很熟悉了,这里相当于就是满K叉树,完全没有头绪怎么办?按照33老师讲过的,咱们画几个符合的数一数验证选项就好了!画两三层满1叉,满2叉,满3叉就可以验证出来了。
1.8 A 这题算是一道经典概念了,另外三种都是需要互相比较的,而基数排序只需要把基数统计即可。
1.9 A 一样,使出33老师的构造+验证大法,N=1的情况、N=2的情况...试试即可!
1.10 B 经典的问题,也是历史考过的,这是递归的思想,一层一层包括下去,像洋葱和卷心菜一样!
1.11 A 发现总共的次数也没有多少,我们画一画就好了,枚举时一定注意要按照顺序,比如按照边的数量递增的方式枚举即可
1.12 B 这题咱们就不能枚举了,子集个数就是每个元素都可以取或不取,所以S=2^10=1024,七个元素的即C(10,7),这里一定记住经典的转换,选7个出来相当于选三个出来,所以是T=C(10,3)=10*9*8/(3*2*1)=120 ,最后比例就是120/1024=60/512=30/256=15/128
1.14 B 这题涉及到位运算的复杂运用,没有做对也没有关系,这是道难题!可以自己试试和x-1进行与运算,如果当前个位是1的话,刚好去掉了这个1,否则也会刚好去掉最后一个1。
1.15 B 最后这题,送分题啦~标准的栈的运用!
问题求解
2.1 基础的逻辑分析,上面说的乱七八糟的我们一个个看慢慢理就好!
2.2 这题我们也可以用枚举的形式 ***8的数量+**8*的数量+*8**的数的数量-**88的数量-*88*的数量-*8*8的数量+*888的数量即可!
阅读程序写结果
这题仔细看体就能发现,核心部分就是大写的话就+1,所以Q变成了R,G变成了H,L变成了M,S变成了T,至于那个循环条件,其实是C语言风格字符串的除了,C语言风格字符串最后结束位置是’\0',不熟悉C风格字符串这个我们也能猜到答案!
答案:RuanHuoMianTai
其实就是统计 1*1,2*2,3*3,~,14*14中有多少个数除以15余1,考场上可以一个个看过去就好!
答案:4
递归题!但只要不是多个参数或者掺和了循环其实都简单,正向反向都可以,为了有条理一点可以列一个表,一行行一列列填下来就好了!
答案:8
这题稍微有点麻烦,但其实只要打好草稿难度都不大,就是一个跳转表,跳几下后就能找到规律了,要看清楚我们cnt是啥时候++
答案:6
完善程序
这题看上去很麻烦,但我们细心一个个看也是能做出来的,第一个函数其实就是把所有因子都保存下来了,下面主程序里双重循环就枚举了所有因子对了,所以空5填ans+gcd(a[i],a[j])
上面gcd函数对辗转相除法熟悉的同学就很简单了,空3是retuan a,空4是a%b
最上面是找到所有因子的话,我们讲判断质数时讲过,只要做半边就行,所以空1为i*i,空2意图也比较明显,是为了防止平方数的平方根被算两边 空2为n/i
双向链表很偏门,但是填空其实很好猜,空2很容易才出来i+1,空3,4根据上下文对称性很容易猜到为R[a[i]]、a[i]
1、5两空的话就需要对双向链表有一定的了解,并且知道题目做法才能写出来了。两个空分别为a[x]=i、R[i]
====================
好的初赛分析就到这里啦~努力这么久的初赛终于考完啦!大家都是好样的!现在好好休息,等待成绩出来然后备战复赛吧!加油!
(版权所有:有渔编程-33老师 禁止非署名转载)
领取专属 10元无门槛券
私享最新 技术干货