无尽的石头

问题描述

在一个古老的迷宫中,有一道无尽的通道。通道上每隔一定的距离就会有一块神秘的石头,石头上刻着从1开始的连续整数。从1号石头开始,每块石头的编号都比前一块大 1。 石头上的数字有特殊的意义。如果你站在编号为n的石头上,并向前走,你将会瞬间移动到编号为n+x的石头上,其中x为的各位数字之和。 例如,如果你站在编号为 16 的石头上,由于1+6=7,所以下一步你会移动到编号为16+7=23的石头上。 现在,会有多次询问,你需要对每个询问输出从1号石头出发到达指定编号石头的最少步数,如果无法到达,则输出 -1。

输入格式

输入包含一个整数t,(1<t100),表示有t个询问

接下来t行,每行一个整数n,(1n10),表示目标石头 的编号。

输出格式

对于每个询问,输出一行,表示从 1 号石头到达目标石头的最少 步数。如果无法到达,输出 -1。

Mycode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def num_sum(num):
num=str(num)
res=0
for i in num:
res+=int(i)
return res
stone_li=[1]
t=int(input())
for q in range(t):
n=int(input())
if n in stone_li:
print(len(stone_li[:stone_li.index(n)+1])-1)
else:
while stone_li[-1] < n:
a = num_sum(stone_li[-1]) + stone_li[-1]
stone_li.append(a)
if stone_li[-1] == n:
print(len(stone_li) - 1)
else:
print(-1)


无尽的石头
https://ianwusb.blog/2024/04/08/无尽的石头/
作者
Ianwusb
发布于
2024年4月8日
许可协议