M斐波那契數列

2021-08-06 05:38:43 字數 1234 閱讀 5854

題目描述:

m斐波那契數列f[n]是一種整數數列,它的定義如下:

f[0] = a

f[1] = b

f[n] = f[n-1] * f[n-2] ( n > 1 )

現在給出a, b, n,你能求出f[n]的值嗎?( 0 <= a, b, n <= 10^9 )

由於f[n]可能很大,你只需輸出f[n]對1000000007取模後的值即可

題解:

列出f[n]的前幾項會發現,f[n] = a^f(n-2) * b^f(n-1),f(n)為斐波拉契數列,用矩陣快速冪求解

費馬小定理:a^k % p = a^(k % (p-1)) 其中,p 為質數

a^f(n-2) * b^f(n-1) % p = a^( f(n-2) % (p-1) ) * b^( f(n-1) % (p-1) ) % p

**

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int mod = 1e9+7;

int n,x,y;

struct matrix

void copy(int *tmp)

c.d[i][j] = tmp % (mod-1);

}return c;

}};long

long qpow(int x,int k)

return ans;

}long

long solve(int x,int y,int n)

; int b[4] = ;

a.copy(a);

b.copy(b);

while (n)

long

long f=0,g=0;

f=qpow(x,a.d[0][1]);

g=qpow(y,a.d[0][0]);

return (f * g % mod);

}int main()

return

0;}

M斐波那契數列

使用費馬小定理降冪處理以及矩陣的快速冪求法 m斐波那契數列f n 是一種整數數列,它定義如下 f 0 a f 1 b f n f n 1 f n 2 n 1 現在,寫出f 2 f 3 f 4 的值,可以發現,其中,a,b的指數均為斐波那契數,歸納法得 f n a fib n 1 b fib n 費馬...

M斐波那契數列

m斐波那契數列f n 是一種整數數列,它的定義如下 f 0 a f 1 b f n f n 1 f n 2 n 1 現在給出a,b,n,你能求出f n 的值嗎?input 輸入包含多組測試資料 每組資料佔一行,包含3個整數a,b,n 0 a,b,n 10 9 output 對每組測試資料請輸出乙個整...

M斐波那契數列

m斐波那契數列f n 是一種整數數列,它的定義如下 f 0 a f 1 b f n f n 1 f n 2 n 1 現在給出a,b,n,你能求出f n 的值嗎?第一行,包含3個整數a,b,n 0 a,b,n 10 9 輸出乙個整數f n 由於f n 可能很大,你只需輸出f n 對1000000007...