分析:定義(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。輸出格式 輸出一行,...