唯一分解定理描述的内容是( )?
任意整数都可以分解为素数的乘积
每个合数都可以唯一分解为一系列素数的乘积
两个不同的整数可以分解为相同的素数乘积
以上都不对
贪心算法的核心思想是( )
贪心
下面的代码片段用于在双向链表中删除一个节点。请在横线处填入( ),使其能正确实现相应功能。
if (current->next != nullptr) current->next->prev = current->prev;
current->prev->next = current->next;
delete current->next;
current->prev = current->next;
辗转相除法也被称为( )
高斯消元法
费马定理
欧几里德算法
牛顿迭代法
下面的代码片段用于计算斐波那契数列。该代码的时间复杂度是( )?
看上图选答案这是b答案
看上图选答案这是c答案
看上图选答案这是d答案
下面的代码片段用于将两个高精度整数进行相加。请在横线处填入( ),使其能正确实现相应功能。
result = to_string(sum % 10) + result;
result = to_string(carry % 10) + result;
result = to_string(sum / 10) + result;
result = to_string(sum % 10 + carry) + result;
第 8 题 给定序列:1,3,6,9,17,31,39,52,61,79,81,90,96。使用以下代码进行二分查找查找元素 82时,需要循环多少次,即最后输出的 times 值为( )。
2
5
3
4
下面的代码片段用于判断一个正整数是否为素数。请对以下代码进行修改,使其能正确实现相应功能。( )
num < 2 应该改为 num <= 2
循环条件 i * i < num 应该改为 i * i <= num
循环条件应该是 i <= num
循环体中应该是 if (num % i != 0)
在埃拉托斯特尼筛法中,要筛选出不大于 n 的所有素数,最外层循环应该遍历什么范围( )?
for (int i = 2; i <= n; ++i)
for (int i = 1; i < n; ++i)
for (int i = 2; i <= sqrt(n); ++i)
for (int i = 1; i <= sqrt(n); ++i)
素数的线性筛法时间复杂度为( )。
这是b选项
这是c选项 |
这是d选项 |
归并排序的基本思想是( )
动态规划
分治
贪心算法
回溯算法
快速排序中,选择的主元素(pivot)会影响算法的( )。
不影响
时间复杂度
空间复杂度
时间复杂度和空间复杂度
递归函数在调用自身时,必须满足( ),以避免无限递归?
有终止条件
函数参数递减(或递增)
函数返回值固定
以上都对
假设给定链表为: ,若调用 searchValue(head, 5) ,函数返回值为( )。
返回 1
返回 0
死循环,无法返回
返回 -1
辗转相除法用于求两个整数的最大公约数。
插入排序的时间复杂度是 O(N log N)。
二分查找要求被搜索的序列是有序的,否则无法保证正确性
使用贪心算法解决问题时,每一步的局部最优解一定会导致全局最优解。
分治算法的核心思想是将一个大问题分解成多个相同或相似的子问题进行解决,最后合并得到原问题的解。
分治算法的典型应用之一是归并排序,其时间复杂度为 O(N log N)。
素数表的埃氏筛法和线性筛法的时间复杂度都是O(N log log N) 。
贪心算法是一种可以应用于所有问题的通用解决方案。
单链表和双链表都可以在常数时间内实现在链表头部插入或删除节点的操作。
在C语言中,递归的实现方式通常会占用更多的栈空间,可能导致栈溢出。
编程题 2
试题名称: B-smooth 数
3.2.1 题面描述
小杨同学想寻找一种名为 B-smooth 数的正整数。
如果一个正整数的最大质因子不超过B ,则该正整数为 -smooth 数。
小杨同学想知道,对于给定的n 和B ,有多少个不超过n 的 -smooth 数。
3.2.2 输入格式
第一行包含两个正整数 n,B含义如题面所示。
3.2.3 输出格式
输出一个非负整数,表示不超过n 的 B-smooth 数的数量。
3.2.4 样例1
10 3