样例2对吗?说说自己的看法

img


按理说每一项的比值都接近1.618,前60项怎么会加起来会有120这么多…


int main()
{
    int N;
    double a=2,b=1,t,sum=0;
    scanf("%d",&N);
    while(N--)
    {
        sum+=a/b;
        t=a;
        a+=b;
        b=t;
    }
    printf("%.2lf",sum);

    return 0;
}

img

样例2的答案是错误的,输入N = 75,结果才是 121.65。一个好玩的写法:

#include <stdio.h>
int main()
{
    int     i, N;
    __int64 m, d;
    double  s; 
    scanf("%d", &N);
    for (i = 1, m = 2, d = 1, s = 0; i <= N; s += m * 1.0 / d, m += d, d = m - d, i++);
    printf("%.2f", s);
    return 0;
}