HITOJ 1864 求Fibonacci數列的位數
http://acm.hit.edu.cn/hoj/problem/view?id=1864
一個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題目大意:給定一個數n,求第n個Fibonacci數的位數
大體思路:
其實如果不嫌麻煩的話你可以用高精度來做。除此之外還有另外一種方法,利用斐波那契數列數列的公式,然後利用log10(n)+1即為位數。值得一提的是對於n比較小的數我們不能用該公式,應該用暴力的方法直接求出f(n),
程式碼如下:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <math.h>
using namespace std;
long long a[45];
int main()
{
int T;
scanf("%d",&T);
a[0]=0;
a[1]=1;
for(int i=2;i<40;i++)
a[i]=a[i-1]+a[i-2];
while(T--)
{
long long n,len;
scanf("%lld",&n);
if(n<40)
len=(int)log10(a[n])+1;
else
len=(int)(log10(1.0/sqrt(5)) +(double)n*log10((1.0+sqrt(5))/2.0))+1;
printf("%lld\n",len);
}
return 0;
}
相關文章
- Fibonacci數列
- fibonacci斐波那契數列詳解 遞迴求Fn非遞迴求Fn求n最近的斐波那契數遞迴
- 藍橋杯:入門訓練 Fibonacci數列
- JavaScript如何求陣列的質數JavaScript陣列
- 使用JavaScriptES6的新特性計算Fibonacci(非波拉契數列)JavaScript
- mysql 求分組中位數、環比、同比、中位數的環比、同比MySql
- 【演算法】Fibonacci(斐波那契數列)相關問題演算法
- 求陣列內所有偶數的和陣列
- 求區間不同數的個數【樹狀陣列求解】陣列
- 使用JavaScript ES6的新特性計算Fibonacci(非波拉契數列)JavaScript
- 兩個有序陣列的中位數陣列
- 無序陣列求第K大的數陣列
- 求資料流中的中位數問題
- 數數的位數(正整數)
- 每天一道演算法題:求兩個排序陣列的中位數演算法排序陣列
- python實現給定一個數和陣列,求陣列中兩數之和為給定的數Python陣列
- 如何在ABAP裡用函數語言程式設計思想列印出非波拉契Fibonacci(數列)函數程式設計
- 求陣列中k個數的所有組合陣列
- rust實戰系列 - 使用Iterator 迭代器實現斐波那契數列(Fibonacci )Rust
- LeetCode-兩個排序陣列的中位數LeetCode排序陣列
- 尋找兩個有序陣列的中位數陣列
- 4. 兩個排序陣列的中位數排序陣列
- # 2024_8_4 求單調上升總和為n的數列的方案數
- 6-1 使用函式輸出指定範圍內Fibonacci數的個數函式
- 求完全數個數
- 演算法-兩個排序陣列的中位數演算法排序陣列
- LeetCode 4. 兩個排序陣列的中位數LeetCode排序陣列
- LeetCode-4. 兩個排序陣列的中位數LeetCode排序陣列
- [Python手撕]兩個升序陣列的中位數Python陣列
- 四位整數位數拆分
- 數字陣列最值,總和,平均,中位數 未完待續陣列
- 求三個數的最小公倍數
- 尋找兩個正序陣列中的中位數陣列
- 1295 統計位數為偶數的數字
- 求眾數
- 習題7-2 求一批整數中出現最多的個位數字 (20分)
- 有趣的請求引數/請求頭
- 統計位數為偶數的數字(C++)C++
- 均值、中位數、眾數