斐波那契前 n 項和acwing

2021-10-09 10:00:46 字數 1359 閱讀 2765

大家都知道 fibonacci 數列吧,f1=1,f2=1,f3=2,f4=3,…,fn=fn−1+fn−2。

現在問題很簡單,輸入 n 和 m,求 fn 的前 n 項和 snmodm。

輸入格式

共一行,包含兩個整數 n 和 m。

輸出格式

輸出前 n 項和 snmodm 的值。

資料範圍

1≤n≤2000000000,

1≤m≤1000000010

輸入樣例:

5 1000

輸出樣例:

12解析:

fn = [ f n f n + 1 s n ]

[fnfn+1sn]

[fn​fn+1​sn​]

fn+1 = [ f n + 1 f n + 2 s n + 1 ]

[fn+1fn+2sn+1]

[fn+1​fn+2​sn+1​]

[ f n f n + 1 s n ]

[fnfn+1sn]

[fn​fn+1​sn​]* [ 0 1 0 1 1 1 0 0 1 ]

⎡⎣⎢010110011⎤⎦⎥

⎣⎡​010​110​011​⎦⎤​ = [ f n + 1 f n + 2 s n + 1 ]

[fn+1fn+2sn+1]

[fn+1​fn+2​sn+1​]

這要推出係數矩陣即可。

#include

using

namespace std;

int n, m;

void

mul(

int c,

int a,

int b[

3]);

for(

int i =

0; i <

3; i++)}

memcpy

(c, temp,

sizeof temp);}

void

mul(

int c[

3],int a[

3],int b[

3]);

for(

int i =

0; i <

3; i++

)for

(int j =

0; j <

3; j++)}

memcpy

(c, temp,

sizeof temp);}

intmain()

;int a[3]

[3]=

,,};

cin >> n >> m;

while

(n) cout << f[2]

<< endl;

}

斐波那契數列的前n項值

description 輸入n,求斐波那契數列前n項的值。斐波那契數列規律如下 1,1,2,3,5,8,13,21,34,55 從第三項開始,每一項都是前面兩項的和。input 輸入正整數n。output 輸出斐波那契數列的前n項值 sample input13 58sample output 11...

斐波那契數列第n項

1 斐波那契數列第n項 在斐波那契數列中,fib0 0,fib1 1,fibn fibn 1 fibn 2 n 1 給定整數n,求fibn mod10000。輸入格式 輸入包含多組測試用例。每個測試用例佔一行,包含乙個整數n。當輸入用例n 1時,表示輸入終止,且該用例無需處理。輸出格式 每個測試用例...

python列印斐波那契數列前n項或第n項

nterms int input 你需要幾項?第一和第二項 n1 0 n2 1 count 2 判斷輸入的值是否合法 if nterms 0 print 請輸入乙個正整數。elif nterms 1 print 斐波那契數列 print n1 else print 斐波那契數列 print n1,n...