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;
}
相關文章
- HITOJ 2255 類似Fibonacci數列求和取模擴充
- Fibonacci數列轉二進位制圖形的驚異發現
- fibonacci斐波那契數列詳解 遞迴求Fn非遞迴求Fn求n最近的斐波那契數遞迴
- 陣列-07. 求一批整數中出現最多的個位數字(20)陣列
- 藍橋杯:入門訓練 Fibonacci數列
- JavaScript如何求陣列的質數JavaScript陣列
- 如何求數列的通項公式公式
- 位運算--求一個 數二進位制中1的個數
- 【c語言】求兩個數中不同的位的個數C語言
- mysql 求分組中位數、環比、同比、中位數的環比、同比MySql
- 求區間不同數的個數【樹狀陣列求解】陣列
- 求陣列內所有偶數的和陣列
- 利用Mathemtaica軟體求數列的和AI
- nyist 468 Fibonacci數列(六)(Miller-Rabin演算法 大數素性測試)演算法
- 求一個整數的二進位制中1的個數
- 兩個有序陣列的中位數陣列
- 【演算法詳解】斐波那契數列 - Fibonacci sequence演算法
- HITOJ 2060 類似斐波那契數列(一段和取模)
- 使用JavaScriptES6的新特性計算Fibonacci(非波拉契數列)JavaScript
- 無序陣列求第K大的數陣列
- JavaScript求陣列數字的平均值JavaScript陣列
- 求資料流中的中位數問題
- 求一個數的二進位制數中所含1的個數的程式碼實現
- 求二進位制數中1的個數(程式設計之美)程式設計
- 使用JavaScript ES6的新特性計算Fibonacci(非波拉契數列)JavaScript
- 【演算法】Fibonacci(斐波那契數列)相關問題演算法
- hdu4417 樹狀陣列(求指定區間比指定數小的數的個數)陣列
- 每天一道演算法題:求兩個排序陣列的中位數演算法排序陣列
- 求陣列中k個數的所有組合陣列
- 求無序陣列總第n大的數陣列
- 求陣列中未出現的最小正整數陣列
- python實現給定一個數和陣列,求陣列中兩數之和為給定的數Python陣列
- Fibonacci數列的遞推C語言詳解:Fn=Fn-1+Fn-2C語言
- 斐波那契數列(Fibonacci)遞迴和非遞迴實現遞迴
- HDU 3059 Fibonacci數列與矩陣求和 矩陣大小不固定矩陣
- HDU2813Interesting Fibonacci(斐波那契數列+迴圈節)REST
- 如何在ABAP裡用函數語言程式設計思想列印出非波拉契Fibonacci(數列)函數程式設計
- 尋找兩個有序陣列的中位數陣列