本题的字符出现顺序应该是以“ASDFasdf”为循环节循环出现的字符串。而 81\bmod8=181mod8=1,所以应该是第一个字符,也就是“A”。 冒泡排序、堆排序和插入排序都是基于两两元素关键字比较的排序。基数排序是直接将元素通过某些规则放到数组的相应位置,不是基于两两元素关键字比较的排序。 考察排列与组合基础知识。1010 个元素的集合的子集数有 2^{10}=1024 个,由 7 个元素组成的子集数有 C(10,7)= C(10,3)= 120,故答案B 考察数据结构基础知识。观察程序可知ret存的是x二进制 11 的个数,带入一些不同的x值到程序中,会发现x &= x - 1是用来获取 x 最低位 1阅读程序可知,程序先读入字符串,再把字符串中每个大写字母的 ASCII 码值加一,所以输出 RuanHuoMianTai。 枚举约数的时候,需要枚举到 n,所以第①空需要填 i * i,i * i <= n 就是枚举到 n
如果 n % i == 0,i 和 n / i 都是 n 的约数,第 ② 空填 n / i 用于防止得到重复的约数。
第 ③④ 空位于辗转相除法求最大公约数函数里,分别填入 a 和 a % b。
第 ⑤ 空位于枚举约数,求两个约数的最大公约数并更新答案的地方,所以需要填上 ans + gcd(a[j])。
考察双向链表的基本操作。程序按照 xx 的值从 11 到 nn 枚举每个值,依次在双向链表中删除该点,删除的时候就可以知道该值左边最近比它大元素的位置和右边最近比它大元素的位置。
第 ① 空是 a 数组的初始化操作,标记每个值的位置,所以需要填 a[x] = i。
第 ② 空是双向链表指针的初始化操作,右指针指向右边相邻的元素,所以需要填 i + 1。
第 ③④ 空是双向链表的删除操作,当前元素右边元素的左指针需要指向左边元素,左边元素的右指针需要指向右边元素,所以分别填 R[a[i]] 和 a[i]。
最后需要输出答案,即 R[i] 的值,所以第 ⑤ 空需要填 R[i]。