2018普及组错题

 

考察数论基础知识。10000 的质因子只有 2 和 5,能被 2整除的数有 5000 个,能被 55 整除的数有 2000个,但是即能被 2 整除,也能被 5整除的数被算了两遍,即能被 10 整除的 1000 个数。

所以答案是 10000 - 5000 - 2000 + 1000 = 4000

考察数据结构基础知识。观察程序可知ret存的是x二进制 1 的个数,带入一些不同的x值到程序中,会发现x &= x - 1是用来获取 x 最低位的 1的,所以符合要求。 

(0,7,8),(1),(2,4),(5),(6,9) 。

 

考察双向链表的基本操作。程序按照 x 的值从 1到 n 枚举每个值,依次在双向链表中删除该点,删除的时候就可以知道该值左边最近比它大元素的位置和右边最近比它大元素的位置。

第 ① 空是 a 数组的初始化操作,标记每个值的位置,所以需要填 a[x] = i

第 ② 空是双向链表指针的初始化操作,右指针指向右边相邻的元素,所以需要填 i + 1

第 ③④ 空是双向链表的删除操作,当前元素右边元素的左指针需要指向左边元素,左边元素的右指针需要指向右边元素,所以分别填 R[a[i]] 和 a[i]

最后需要输出答案,即 R[i] 的值,所以第 ⑤ 空需要填 R[i]

制作不易,打赏求支持 

谢谢各位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值