测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A48752. 密码问题:根据密码本和电子钥匙, 破解笔记本电脑的密码。密码本是一个非降的整数序列, 电子钥匙是一个整数, 得到密码的方法是在密码本中找到最接近电子钥匙的整数(如果多个符合条件, 输出最小的一个)。例如:密码本为下面的列表a=[1,22,43,45,45,55,60,70,89]电子钥匙为整数 44满足条件的整数为 43 和 45, 最终的密码为 43补全下面的代码:a=[1,22,43,45,…

填空题 困难

题目描述

密码问题:

根据密码本和电子钥匙, 破解笔记本电脑的密码。

密码本是一个非降的整数序列, 电子钥匙是一个整数, 得到密码的方法是在密码本中找

到最接近电子钥匙的整数(如果多个符合条件, 输出最小的一个)。

例如:

密码本为下面的列表

a=[1,22,43,45,45,55,60,70,89]

电子钥匙为整数 44

满足条件的整数为 43 和 45, 最终的密码为 43

补全下面的代码:

a=[1,22,43,45,45,55,60,70,89] #密码本

k=int(input()) #k 为电子钥匙

l=0

r=8

while l+1!=r:

  mid=int (____①____)

  if a[mid]<k:

____②____

  else:

r=mid

  if a[r]==k:

____③____

if k-a[l] <= ____④____:

   print(a[l])

else:

   print(⑤)

参考答案

a=[1,22,43,45,45,55,60,70,89] #密码本 k=int(input()) #k 为电子钥匙 l=0 r=8 while l+1!=r: mid=int (((l+r)/2) if a[mid]<k: l = mid else: r=mid if a[r]==k: break if k-a[l] <= a[r]-k: print(a[l]) else: print(a[r])
上一题 下一题