B2069 求分数序列和

观察题面,公式中分子分母都是斐波那契数列。

分母为第 $n+1$ 项,分子为第 $n+2$ 项。

斐波那契数列:每一项=前两项的和。

即 $f[i]=f[i-1]+f[i-2]$,考虑打表。

我们就可以得到总共要打到第 $32$ 项,打表程序:

#include <iostream>
#include <cstdio>
using namespace std;
long long f[31], n, a;
int main()
{
    freopen("biao.txt", "w", stdout);
    f[1] = f[2] = 1;cout << "1, 1, "; //初始状态
    for(int i = 3;i <= 32;++i)
        f[i] = f[i - 1] + f[i - 2], cout << f[i] << ", "; //公式
    fclose(stdout);
    return 0;
}

从而就有:

#include <iostream>
#include <cstdio>
using namespace std;
double s;int n, f[] = {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309};
int main()
{
    cin >> n;
    for(int i = 0;i < n;++i)
        s += 1.0 * f[i + 2] / f[i + 1]; //分母为第 n+1 项,分子为第 n+2 项
    printf("%.4lf", s);
    return 0;
}
posted @ 2021-07-13 20:08  5k_sync_closer  阅读(11)  评论(0编辑  收藏  举报  来源