外观数列是指具有以下特点的整数序列:
d, d1, d111, d113, d11231, d112213111, ...
它从不等于 1 的数字 d 开始,序列的第 n+1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d,所以就是 d1;第 2 项是 1 个 d(对应 d1)和 1 个 1(对应 11),所以第 3 项就是 d111。又比如第 4 项是 d113,其描述就是 1 个 d,2 个 1,1 个 3,所以下一项就是 d11231。当然这个定义对 d = 1 也成立。本题要求你推算任意给定数字 d 的外观数列的第 N 项。
输入第一行给出 [0,9] 范围内的一个整数 d、以及一个正整数 N(≤ 40),用空格分隔。
在一行中给出数字 d 的外观数列的第 N 项。
1 8
1123123111
提交结果:

代码:
- num = input().split()
-
-
- def A(num):
- s = ''
- count = 0
- while count < len(num):
- j = count + 1
- con = 1
- while j < len(num) and num[count] == num[j]:
- con += 1
- j += 1
- if con == 1:
- s += num[count] + '1'
- else:
- s += num[count] + str(con)
- count = j
- return s
-
-
- a1 = num[0]
- for i in range(int(num[1]) - 1):
- a1 = A(a1)
-
- print(a1)