首页 > 试题广场 >

小红的数列

[编程题]小红的数列
  • 热度指数:651 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红拿到了一个数列,数列满足以下性质:a_1=1,a_2=2,从第三项开始,a_i=a_{\lfloor i/3 \rfloor}+a_{\lfloor i*2/3 \rfloor}
现在给定n,请你求出该数列的前n项。
a_{\lfloor i/3 \rfloor}表示 "i/3"的向下取整。

输入描述:
一个正整数n
1\leq n \leq 200000


输出描述:
n个整数,用空格隔开。
示例1

输入

5

输出

1 2 3 3 4

说明

a_1=1
a_2=2
a_3=a_1+a_2=3
a_4=a_1+a_2=3
a_5=a_1+a_3=4
n=int(input())

nums=[0]*(n+1)
nums[0]=0
nums[1]=1
nums[2]=2
for i in range(3,n+1):
    nums[i]=nums[i//3]+nums[(i*2)//3]

for i in range(1,n+1):
    print(nums[i], end=' ')

发表于 2026-03-12 22:15:38 回复(0)