使用python我无法解决这个问题。
当删除三位数字N的中间数字时,由此获得的两位数字是N除以16.找到所有这些数字n。
任何人都可以回答这个问题并解释一下吗?
编辑:除以16时的数字N必须等于该2位数字,但大部分答案都不起作用。
答案 0 :(得分:2)
((N/100)*10+(N%10))/16
N / 100可获得10 ^ 2位数,而N%10可获得10 ^ 0位数。 %代表模运算符
for i in range(100,1000):
if ((i/100)*10+(i%10))%16==0:
print i
答案 1 :(得分:0)
我认为您要问的是如何从数字中提取数字。 这个3位数字怎么样:
N = str(N) #convert to string
N = N[:1] + N[2:] #removing 2nd digit
N = int(N) #convert to int
然后你只需循环范围(100:1000)并测试获得的数字是否可以除以16
答案 2 :(得分:0)
嗯,你可以这样做,对于有2位数的16的每个倍数,在这2位数之间插入0到9之间的每个数字,并将结果附加到列表中,然后你可以做线性或二进制搜索在该列表上进行进一步处理,这里是代码:
results = []
i = 1
while len(str(i*16)) == 2:
multiple = str(i*16)
first_digit = multiple[0]
second_digit = multiple[1]
for digit in range(10):
results.append(int(first_digit + str(digit) + second_digit))
i += 1
print("your results are: ", results)
输出是这样的:
your results are: [106, 116, 126, 136, 146, 156, 166, 176, 186, 196, 302,
312, 322, 332, 342, 352, 362, 372, 382, 392, 408, 418, 428, 438, 448, 458,
468, 478, 488, 498, 604, 614, 624, 634, 644, 654, 664, 674, 684, 694, 800,
810, 820, 830, 840, 850, 860, 870, 880, 890, 906, 916, 926, 936, 946, 956,
966, 976, 986, 996]
在此代码中,i
从1到6,对于i
的每个值,内部循环从0
运行到9
,从而获得整体迭代这个数字列表是60。
然后,根据您选择进行线性搜索还是二元搜索,您必须分别进行最多60次比较或最多6次比较。
希望这有帮助。
答案 3 :(得分:0)
根据我的理解,如果我们将S的数字称为N的第一位和最后一位给出的数字。您正在寻找S = N / 16的所有N. 我用以下解决方案解决了这个问题:
i = 7 # first i where i*16 > 100
while i*16 < 1000:
N_num = i * 16
N = str(N_num)
S = N[0] + N[-1]
S_num = int(S)
if S_num == N_num/16:
print(N_num)
i += 1
答案: