HIT 1864

HIT 1864(计算斐波那契第k位有多少位数)

一个Fibonacci数列是这样定义的: f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2)
现在你的任务是, 对于每个给定的数K,计算f(K)的位数。

输入
第一行一个数N, 表示下面有N个测试数据。
紧接着下面N行, 每行一个整数K ( 1 <= K <= 2^32 -1 )
输出
对于每个输入K, 输出f(K)的位数, 每个输出占一行。

示例输入

5
1
2
3
10
20

示例输出

1
1
1
2
4

这是一条计算斐波那契数列第k位数有多少位数的公式(我不知道为什么是这样,能用就完事

#include <cstdio>
#include <cmath>

int main() {
    int t, n;
    while(~scanf("%d", &t)) {
        while(t--) {
            scanf("%d", &n);
            int result = (double)n * log10(0.5 + 0.5 * sqrt(5)) - log10(sqrt(5));
            printf("%d\n", result + 1);
        }
    }
    return 0;
}

posted @ 2019-08-09 19:28  小饭hhh  阅读(103)  评论(0编辑  收藏  举报