选择题 共14道
判断题 共10道
编程题 共2道
在升序数组 nums 中寻找目标值 target,下列程序可以填入的是( )
class Search(object):
def search(self, nums, target):
left, right = 0, len(nums) - 1
while left <= right:
________________________________________
if nums[mid] == target:
return mid
elif nums[mid] > target:
right = mid - 1
else:
left = mid + 1
return -1
500个病毒样本中,已知有一个是病毒检测呈阳性,用试纸测试阳性病毒以后,试纸在3天以后会变色,用试纸测试时间不计,三天以后要出结果,请问最少用多少个试纸能够找出哪一个病毒样本有毒()
一名收银员,给顾客找零,找零的目标是给出确定金额的同时,使用尽可能少的硬币。有不同面额的硬币:1分,5分,10分,25分.如果需要给顾客准确的零钱77分,同时使用最少的硬币下列程序中横线应该填写( )。
def coin_change(amount, coins):
result = []
for coin in sorted(coins, reverse=True):
while amount >= coin:
___________________
result.append(coin)
return result
coins = [1, 5, 10, 25]
amount = 63
下列程序是素数筛的程序,横线处应该填上( )。
def sieve(n):
if n < 2:
return []
prime = [True] * (n+1)
prime[0] = prime[1] = False
for i in range(2, int(math.sqrt(n)) + 1):
if prime[i]:
_______________________
prime[j] = False
return [p for p in range(2, n+1) if prime[p]]
for prime in sieve_of_eratosthenes(100):
print(prime)
下面程序是埃氏筛的一个实现,横线处应该填写( )。
n = 10**8
s = [0]*(n+1)
k=0
for i in range(2,n+1):
if s[i]==0:
k+=1
___________________________
s[j]=1
下列程序中,使用了二分查找算法,横线处应该填写的是()。
def search(arr, x):
low = 0
high = len(arr) - 1
while low <= high:
__________________
if arr[mid] == x:
elif arr[mid] > x:
high = mid - 1
low = mid + 1
正整数1024的所有约数的和为多少( )。
下面程序是对n!进行唯一分解,横线处应该填入的是( )。
def unique_fac(n):
print(n, '=', end='')
for i in range(2, n + 1):
_____________________________
print(' {}*'.format(i), end='')
n //= i
if n % i == 0 and i == n:
print(' {}'.format(i), end='')
break
unique_fac(math.factorial(5))
假设有⼀些物品,每个物品都有⾃⼰的重量,我们需要将这些物品装⼊箱⼦中,每个箱⼦也有⾃⼰的重量限制。贪⼼算法每次都选择重量最轻的物品放⼊当前最轻的箱⼦中,如果箱⼦可以装下,就放⼊;如果箱⼦不能装下,就尝试下⼀个箱⼦,直到找到可以放⼊的箱⼦。下列贪⼼算法程序中,横线处应该填⼊的是( )。
下列快速排序算法中,横线处应该填入的是( )。
def quick(arr):
if len(arr) <= 1:
return arr
____________________
left = [x for x in arr if x < p]
middle = [x for x in arr if x == p]
right = [x for x in arr if x > p]
return quick(left) + middle + quick(right)
下列二分枚举算法中,{ }处应该填入的程序是({}不算做程序的一部分)( )。
def binary_search(arr, x):
{
}
下面代码是寻找水仙花数的程序,横线处应该填写的代码是( )。【是指一个n位数(n≥3),其每位数字的n次幂之和等于它本身】
def is_narcissistic_num(num):
str_num = str(num)
num_digits = len(str_num)
————————————————————————————
return num == sum_of_powers
for i in range(100, 10000):
if is_narcissistic_num(i):
print(i, "是水仙花数")
对于正整数n,欧拉函数f(n),表示小于或等于n的正整数中与n互质的数的数目,例如f(8)=4。f(100)=( )。
下列程序输出的是( )。
def reverse(string):
if len(string) == 0:
return
temp = string[0]
reverse(string[1:])
print(temp, end='')
string = "chen a dai"
reverse(string)
(-1) mod 127和126 mod 127 的结果是一样的
一个数的反码,实际上是这个数对于一个模的同余数
1997和615用欧几里得算法计算最大公约数的过程如下:
1997/615=3(余152)
615/152=4(余7)
152/7=21(余5)
7/5=1(余2)
5/2=2(余1)
2/1=2(余0)
得出最大公约是是1
欧几里得算法适用于实数
每个大于1的整数可以唯一地写成质数的乘积的形式
贪婪算法的复杂度通常是线性的,即O(n),其中n是输入的大小
归并排序的时间复杂度为O(n log n)
根据同余计算,可以推导出(a∗b)%m=(a%m∗b%m)%m
二分查找算法的复杂度通常表示为O(log n),其中n是数组的长度
def(十六进制) = 103231(五进制)