题目
从标准输入读入一个正整数 n,输出斐波那契数列的前 n 项(数列从 1, 1, 2, 3, 5, 8... 开始)。
输入格式:一行输入一个正整数 n。
输出格式:在一行中输出斐波那契数列前 n 项,数字之间以空格分隔,末尾换行。
数据范围与约定:1 ≤ n ≤ 50。
思路与算法
1. 滚动变量迭代
只需维护前两项 a, b = 1, 1,每轮迭代通过 a, b = b, a + b 同时更新,空间复杂度仅为 O(1)。
2. 输出排版
收集前 n 项至列表中,使用 " ".join(map(str, res)) 优雅输出,避免末尾有多余空格。
完整程序
# 鸡兔同笼:设公鸡为 g,母鸡为 m,小鸡为 100 - g - m
for g in range(101):
for m in range(101 - g):
c = 100 - g - m
# 小鸡按 3 只 1 文钱计算(c 须能被 3 整除),总价恰为 100
if c % 3 == 0 and 5 * g + 3 * m + c // 3 == 100:
print(f'{g} {m} {c}')运行示例
输入:
7输出:
1 1 2 3 5 8 13