zoukankan      html  css  js  c++  java
  • 2018普及组初赛试题详解

    温馨提示:请在观看本题解时配合题目观看

    1.D(地球人都知道)

    2.D
    解析:可以选择将所有的其他进制换为10进制,10进制转多进制以及多进制转十进制方法如下:

    十进制转多进制:

    设该十进制数为N,要化为H进制

    用H不断除以N,直到N为0为止,在整个过程中记下余数并按顺序排列,最后将该序列倒过来就是H进制下的N
    举个例子:

    接下来要把37换成2进制
    37=2*18+1
    18=2*9+0
    9=2*4+1
    4=2*2+0
    2=2*1+0
    1=2*0+1
    故在二进制下37为100101 
    

    多进制转十进制

    设该进制数为N

    从0开始,从个位依次向高位写数,可以把数写在该位数字的上面,如下

    我们写的数(mathsf{9876543210})
    被化进制数(mathsf{1001101011})

    设被化进制数上的某一位为a,它上面的数为b(就是所对应的我们写的数),该被化进制数的进制为N,则我们可以得到一个式子:(N^b*a),把每一位都这样处理,得到的结果加起来,就是我们要得到的对应的十进制数,即:
    (sum_{i=1}^nN^{b_i}*a_i)
    这个就是我们所要求的十进制数。
    用上面的例子举例:
    (2^9*1+2^6*1+2^5*1+2^3*1+2^1*1+2^0*1)即是我们所求的结果

    如果是小数转化进制,那就与整数相反,在整数化进制的过程中,把取余运算化成乘法运算,乘H,不是取余数而是取整数部分,然后顺序排列。例如:

    0.375   
    *2    0.75     0
    *2    1+0.5    1
    *2    1+0      1
    所以0.375的二进制是0.011 
    

    而对于H进制化10进制,则从个位上的0往后写,依然和以前一样(sum_{i=1}^nN^{b_i}*a_i),只不过是负指数幂的运算。这里不再赘述。

    3.D
    TP>GB>MB>KB>B并且其中的进制是1024

    4.B
    广域网WAN,城域网MAN,局域网LAN

    5.B
    1984年中国计算机学会创办全国青少年计算机程序设计竞赛

    6.A

    7.A
    深度为h的满k叉树,每一层的节点数为(设该层数为a)(k^a),注意,该层的层数等于其深度加一。
    那么累加一下,便可以得到结果((k^{h+1}-1)/(k-1))

    8.A
    基数排序不需要关键字比较

    9.A
    链接:https://www.nowcoder.com/questionTerminal/85d2b9941f4342639684da19900cf0d1?orderByHotValue=1&mutiTagIds=1208&page=1&onlyReference=false
    来源:牛客网

    (1)n为奇数
    算法思路:选定数组第一个元素为最大值max和最小值min,对剩余的n-1个元素按照每两个元素进行分组,首先对每个分组里面的两个元素进行对比,得到当前分组中最大值temp_max和最小值temp_min,然后用最大值max与当前分组中最大值temp_max做对比,用最小值min与当前分组中最小值temp_min做对比,分别更新最大值max和最小值min,按照步长为2,向后推进,直到遍历完数组
    比较次数=3*(n-1)/2,解释:每个分组两个元素进行对比,对比次数为n-1/2,得到n-1/2个最大值temp_max和最小值temp_min,再用最小值min与所有的temp_min,最大值max和所有的temp_max做对比得到最后的最大值和最小值,次数都为n-1/2,所以最后总的次数为3*(n-1)/2。
    (2)n为偶数
    算法思路:对数组按照每两个元素进行分组,取第一个分组中的较大值为最大值max,分组中的较小值作为最小值min,然后用max和剩余n-2/2组产生的temp_max做对比,min和剩余的n-2/2组产生的temp_min做对比,得到最终的最大值和最小值
    比较次数:分组中每个组中的两个元素进行对比次数为n/2,用第一组的较大值和剩余n-2/2组的较大值对比,次数为n-2/2,用第一组的较小值和剩余n-2/2组的较小值对比,次数为n-2/2,所以总次数为n/2+(n-2)/2*2=3n/2-2
    所以最终答案为A

    解析:
    如果分别找最大值、最小值,则至少都需要N-1次操作。
    同时找最大最小值,有更优化的方法,如果没有学过这个算法,本题只能根据题面猜测肯定小于2N-2,需在A和B里面蒙一个,50%几率。
    学过的话,按照下面的优化算法:
    N为奇数时,比较次数为3(N-1)/2 =(3N+1)/2 - 2
    N为偶数时,比较次数为1 +3
    (N-2)/2 = 3N/2 – 2
    综合奇偶,显然答案为A
    找最大最小值的优化算法:
    初始值:
    N为奇数,最大值、最小值的初始值都设为第一个元素。
    N为偶数,将前两个元素比较,最大值初始值为大的元素,最小值初始值为小的元素。
    枚举,每次两个元素(循环步长为2)
    比较两个元素,分出大小。
    大的元素与最大值比较,比最大值大则设为该元素。
    小的元素与最小值比较,比最小值小则设为该元素。
    循环结束,得到最大、最小值。
    https://www.cnblogs.com/littlehb/p/10625192.html

    其实可以找几个数试一下

    10.B

    11.A
    自己画一画就知道了,注意不要画重复

    12.B
    一个具有N个元素的集合的子集数为(2^N),而由7个元素的子集数为C(N,7)(排列组合),所以答案为B

    13.B
    把10000所有的因子列出来,再减去,注意处理重复的部分,即及能被2整除,又能被5整除的数

    14.B
    如果实在不知道就找几个数试一下,x &= x - 1的作用是去掉末尾的1

    15.B

    16.ABBB
    假设排除即可

    17.224
    1-9中:1个

    10-99中:1*8+10=18个

    100-999中:(1+18)*8+100=252个

    1000-1999中:1+18+252=271个

    2000-2018中:2个

    总共 1+18+252+271+2=544个
    https://www.cnblogs.com/littlehb/p/10625192.html

  • 相关阅读:
    Linux文件系统之目录清单
    Linux系统使用iftop查看带宽占用情况
    性能分析之TCP全连接队列占满问题分析及优化过程(转载)
    什么是枚举及枚举的使用场合
    height:100%和height:auto的区别
    Jquery基础之DOM操作
    SSM三大框架整合(Spring+SpringMVC+MyBatis)
    js解析JSON
    mybatis中oracle实现分页效果
    MyBatis动态SQL语句
  • 原文地址:https://www.cnblogs.com/TianMeng-hyl/p/13693590.html
Copyright © 2011-2022 走看看