链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1242
矩阵快速幂说白了就是用矩阵找规律+快速幂乘矩阵
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const long long inf = 1000000009;
long long n;
struct node{
long long a[2][2];
}t;
node chen(node pt){
node ptt = {0};
for(int i = 0;i<2;++i){
for(int j = 0;j<2;++j){
for(int k = 0;k<2;++k){
ptt.a[i][j] += (pt.a[i][k] * t.a[k][j])%inf;
ptt.a[i][j] %= inf;
}
}
}
return ptt;
}
node solve(long long q){
node pt = t;
if(q <= 0) return pt;
while(q){
if(q & 1){
pt = chen(pt);
--q;
}
t = chen(t);
q >>= 1;
}
return pt;
}
int main(){
while(cin>>n){
t.a[0][0] = 1;
t.a[0][1] = 1;
t.a[1][0] = 1;
t.a[1][1] = 0;
node ans = solve(n-2);
if(n == 0){
cout<<"0\n";
}
else{
cout<<ans.a[0][0]*1<<endl;
}
}
return 0;
}