题目

从标准输入读入一个正整数 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