练习题 数列
练习题39
有一个数列A[n] 从A[0]开始每一项都是一个数字 数列中A[n+1]都是A[n]的描述 其中A[0]=1 规则如下 A[0]:1 A[1]:11 含义其中A[0]=1是1个1 即11 表示A[0]从左到右连续出现了1次1 A[2]:21 含义其中A[1]=11是2个1 即21 表示A[1]从左到右连续出现了2次1 A[3]:1211 含义其中A[2]从左到右是由一个2和一个1组成 即1211 表示A[2]从左到右连续出现了一次2又连续出现了一次1 A[4]:111221 含义A[3]=1211 从左到右是由一个1和一个2两个1 即111221 表示A[3]从左到右连续出现了一次1又连续出现了一次2又连续出现了2次1
输出第n项的结果
0<= n <=59
输入描述:
数列第n项 0<= n <=59
4
输出描述
数列内容
111221
""" 解题思路,先写一个函数testnum用来计算下一个字符串是什么,对每个字符进行一一遍历,如果遇见跟前1个不一样的 那么中断计数,并将该字符的数量和字符都以字符的形式加入列表 """ def testnum(str1): list1=[] i=0 while i<len(str1): chr1=str1[i] count=1 i+=1 while i<len(str1): if str1[i]!=chr1: break else: i+=1 count+= 1 list1.append(str(count)) list1.append(chr1) res=''.join(list1) return res
print(testnum(str1='1211'))
n=int(input()) listres=[] for i in range(n):
if i == 0:
listres.append(testnum('1'))
else:
listres.append(testnum(listres[i-1]))
print(listres[n-1])