小青的矩陣 nyist148

来源:互联网 发布:成都广电网络密码 编辑:程序博客网 时间:2024/05/16 01:03
#include "cstdio"#include "cstring"#include "algorithm"using namespace std;#define ll long long#define mod 10000struct mat{ll e[3][3];int step;void init(int flag,int s){step=s;for(int i=1;i<=s;i++){for(int j=1;j<=s;j++){if(i==j){e[i][j]=flag;}else{e[i][j]=0;}}}}}op,ans;mat mul(mat a,mat b){mat ret;ret.init(0,a.step);for(int i=1;i<=a.step;i++){for(int j=1;j<=a.step;j++){if(a.e[i][j]){for(int k=1;k<=a.step;k++){ret.e[i][k]+=(a.e[i][j]*b.e[j][k])%mod;ret.e[i][k]%=mod;}}}}return ret;}mat qpow(mat a,int p){mat ret;ret.init(1,a.step);while(p){if(p&1)ret=mul(ret,a);p>>=1;a=mul(a,a);}return ret;}void init_op(){op.step=2;op.e[1][1]=1; op.e[1][2]=1;op.e[2][1]=1; op.e[2][2]=0;}int main(int argc, char const *argv[]){int n; init_op(); while(~scanf("%d",&n)){if(n<0)break;ans=qpow(op,n);printf("%d\n",ans.e[1][2]);}return 0;}

0 0
原创粉丝点击