[题目描述]
已知一个数列的前 3 个数为 3, 4 , 5 ,以后每个数为前 3 个数的和,编程序求此数列的第 N 项。
输入格式:
输入 N 。
输出格式:
求出第 N 项的值。
样例输入
28
样例输出
25527448
数据范围
对于 100% 的数据,保证 N≤35 。
来源/分类(难度系数:一星)
完整代码展示:
a=int(input())
s1=3
s2=4
s3=5
b=3
c=[3,4,5]
while b<a+1:
s1=s1+s2+s3
c.append(s1)
b+=1
if b==a:
break
s2=s2+s3+s1
b+=1
c.append(s2)
if b==a:
break
s3=s3+s1+s2
c.append(s3)
b+=1
if b==a:
break
if a<=3:
print(c[a-1])
else:
print(c[-1])
代码解释:
“a=int(input())
s1=3
s2=4
s3=5
b=3
c=[3,4,5] ”,让用户输入所求数列的第几项。并将数列的前三项分别赋给s1,s2,s3,接着将s1,s2,s3存入列表c中。设置循环密码子为b,并将b的初始值设为3。
“while b<a+1:
s1=s1+s2+s3
c.append(s1)
b+=1
if b==a:
break
s2=s2+s3+s1
b+=1
c.append(s2)
if b==a:
break
s3=s3+s1+s2
c.append(s3)
b+=1
if b==a:
break ”,未循环至所求项时,将第四项设为s1,s1=s1+s2+s3(第四项的值为前三项的和),将s1存入列表c中(默认添加位置为c的末尾)。接着令b=b+1,判断b是否为a(判断是否已循环至第a项)。如果a==b,则中止循环;否则继续循环。下面的s2,s3同理。每次求出并添加进c中后面的一项,,就让b加1,直至b==a,循环结束。
“if a<=3:
print(c[a-1])
else:
print(c[-1] ”,当a<=3时,打印列表c中的c[a-1]项;否则打印c的末尾项c[-1]。
运行效果展示: