top1编程
← 返回题目
题解

求分数序列和

1 条题解

  • 0
    @ 2026-8-4 10:39:06

    解题思路

    分数序列 q_i/p_i 的每一项满足:q_{i+1} = q_i + p_i,p_{i+1} = q_i,初始 p=1, q=2(即 2/1)。

    每一项循环里:先累加 q/p,再按规律算出下一项的分子分母。保留 4 位小数输出。

    参考代码

    #include <cstdio>
    using namespace std;
    
    int main() {
        int n;
        scanf("%d", &n);
        int p = 1, q = 2;       // 第一项 q1/p1 = 2/1
        double sum = 0;
        for (int i = 0; i < n; i++) {
            sum += (double)q / p;   // 累加当前项
            int nq = q + p;         // 下一项分子
            p = q;                  // 下一项分母
            q = nq;
        }
        printf("%.4lf\n", sum);     // 保留4位小数
        return 0;
    }
    

    复杂度分析

    循环 n 次,时间复杂度 O(n),额外空间复杂度 O(1)。

    • 1