数学相关的任务使用python解决问题

时间:2017-07-04 12:43:16

标签: python python-2.7 python-3.x math

使用python我无法解决这个问题。

  

当删除三位数字N的中间数字时,由此获得的两位数字是N除以16.找到所有这些数字n。

任何人都可以回答这个问题并解释一下吗?

编辑:除以16时的数字N必须等于该2位数字,但大部分答案都不起作用。

4 个答案:

答案 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

答案:

  • 160(S = 10且10 * 16 = 160 = N)
  • 192(S = 12和12 * 16 = 160 = N)