问题描述
请找到一个大于 2022的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。
请将这个数的十进制形式作为答案提交。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
代码实现:
import os
import sys
# 请在此输入您的代码
def xiao(m):
while m: # 当m为0时,跳出循环
if m % 16 <= 9: # 十六进制数中,A到F代表的是10到15
return False
else:
m //= 16 # 当不满足if的时候,让其向下整除16,在进行一次取余,观察是否符合条件
return True
x = 2022
while True:
if xiao(x):
break
x += 1 # 如不满足条件就加一
print(x)
解题思路:
本题要求的是转换为16进制数后所有位数都为A到F,而A到F转换为10进制为10到15.
可以写一个函数,用来判断其是否满足条件。
当数对16取余小于等于9的时候,其不满足条件,数需要加一,再进行比较
若对16取余大于9,则需要判断其对16取整是否为0,若不为0,重复上述操作,先取余........