nyoj 1000 又見斐波那契數列

2021-07-11 06:17:42 字數 898 閱讀 4934

分析:定義(x,y),x代表a的個數,y代表b的個數。

先找規律f(0)=a        (1,0)

f(1)=b;       (0,1)

f(2)=ab      (1,1)

f(3)=abb     (1,2)

f(4)=abbab   (2,3)

f(5)=abbababb    (3,5)

f(6)=abbababbabbab  (5,8)

......

由規律可知,f(n)=a^fibonacci(n-2)*b^fibonacci(n-1),但是n=500的時候fibonacci(500)

就已經超過1e100了,又因為求的數要%1000000007,而1000000007是素數,由費馬小定理可

知:若p為素數,a^(p-1)≡1 (mod p)。a^b%p=(a^(k(p-1)+c))%p=(a^(k(p-1))*a^c)%p=a^c%p

。所以f(n)=a^(fibonacci(n-2)%1000000006

)*b^(fibonacci(n-1)%1000000006

)%1000000007.

#include const int n = 1000000007;

struct mat;

mat aa;

long long dfs(long long a, long long n)

else }

mat mul(mat a,mat b)

c.a[i][j] = s;

} }return c;

}mat mul_mi(mat a,long long n)

else }

int main()

} return 0;

}

又見斐波那契

這是乙個加強版的斐波那契數列。給定遞推式 求f n 的值,由於這個值可能太大,請對109 7取模。第一行是乙個整數t 1 t 1000 表示樣例的個數。以後每個樣例一行,是乙個整數n 1 n 1018 每個樣例輸出一行,乙個整數,表示f n mod 1000000007。412 3100 1 165...

又見斐波那契數列

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 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 的值嗎?輸入 輸入包含多組測試資料 每組資料佔一行,...

斐波那契數

入門訓練 fibonacci數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,...