tjut 3519

来源:互联网 发布:html5解析json 编辑:程序博客网 时间:2024/06/07 15:31
#include <iostream>  #include <cstring>  using namespace std;  const int mod = 10007;  int n;  struct matrax  {      int m[4][4];  };  matrax A={    1,1,0,2,    1,0,0,0,    0,1,0,0,    0,0,0,2  };  matrax E;  void init()  {     for(int i=0;i<4;i++)      for(int j=0;j<4;j++)       E.m[i][j]=(i==j);  }  matrax multi(matrax a,matrax b)  {      matrax c;      for(int i=0;i<4;i++){          for(int j=0;j<4;j++){              c.m[i][j]=0;              for(int k=0;k<4;k++)                  c.m[i][j]+=a.m[i][k]*b.m[k][j]%mod;          c.m[i][j]%=mod;          }      }      return c;  }  matrax power(matrax A,int k)  {      matrax ans=E,p=A;      while(k){          if(k&1){              ans=multi(ans,p);              k--;          }          k>>=1;          p=multi(p,p);      }      return ans;  }  int main()  {      init();      int a[4]={8,2,6,16};      while(cin>>n){          if(n<=2){              cout<<0<<endl;              continue;          }          if(n<=5){              cout<<a[n-2]<<endl;              continue;          }          matrax ans=power(A,n-5);          int x=0;          for(int i=0;i<4;i++)              x+=(ans.m[0][i]*a[4-i-1])%mod;          cout<<x%mod<<endl;      }      return 0;  }

0 0
原创粉丝点击