• f(1) = 1
• f(2) = 1
• f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 為整數)
請你求出 f(n) mod 1000000007 的值。
輸入格式:
·第 1 行:乙個整數 n
輸出格式:
第 1 行: f(n) mod 1000000007 的值
輸入樣例#1:
複製
5
輸出樣例#1:
複製
5
輸入樣例#2:
複製
10
輸出樣例#2:
複製
55
對於 60% 的資料: n ≤ 92
對於 100% 的資料: n在long long(int64)範圍內。
感覺自己學的一直是假的矩陣快速冪。。。
輔助矩陣為
$\begin 0 & 1 \\ 1 & 1 \end$
#include#include#define int long long
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,maxn,stdin),p1==p2)?eof:*p1++)
using
namespace
std;
const
int maxn=101
;const
int mod=1e9+7
;char buf[1
<<20],*p1=buf,*p2=buf;
inline
intread()
while(c>='
0'&&c<='9')
return x*f;
}int
n,k;
struct
matrix
;
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
ans.m[i][j]=(ans.m[i][j]+(m[i][k]*a.m[k][j])%mod)%mod;
return
ans;
}
matrix pow(
intp)
return
ans;
}void
print()
};main()
洛谷P1962 斐波那契數列
f 1 1 f 2 1 f n f n 1 f n 2 n 2 且 n 為整數 請你求出 f n mod 1000000007 的值。輸入格式 第 1 行 乙個整數 n 輸出格式 第 1 行 f n mod 1000000007 的值 輸入樣例 1 5 輸出樣例 1 5 輸入樣例 2 10 輸出樣例...
洛谷P1962 斐波那契數列
f 1 1 f 2 1 f n f n 1 f n 2 n 2 且 n 為整數 請你求出 f n mod 1000000007 的值。輸入格式 第 1 行 乙個整數 n 輸出格式 第 1 行 f n mod 1000000007 的值 輸入樣例 1 5 輸出樣例 1 5 輸入樣例 2 10 輸出樣例...
洛谷 P1962 斐波那契數列
f 1 1 f 2 1 f n f n 1 f n 2 n 2 且 n 為整數 請你求出 f n mod 1000000007 的值。矩陣快速冪 斐波那契數列通項公式為 f i f i 1 f i 2 相當於dp的轉移方程是一致的,那麼初始矩陣 0 1 不斷去乘上狀態轉移矩陣,即不斷進行矩陣運算,最...