本文共 1009 字,大约阅读时间需要 3 分钟。
#include #include #include #include #include #include #define Ll long longusing namespace std;int a[9][9]{ //A B C D E F G H{ 0,0,0,0,0,0,0,0,0},{ 0,0,1,0,0,0,0,0,1},//A{ 0,1,0,1,0,0,0,0,0},//B{ 0,0,1,0,1,0,0,0,0},//C{ 0,0,0,1,0,1,0,0,0},//D{ 0,0,0,0,1,0,1,0,0},//E{ 0,0,0,0,0,1,0,1,0},//F{ 0,0,0,0,0,0,1,0,1},//G{ 0,1,0,0,0,0,0,1,0},//H};struct jv{ int m[9][9]; jv(){ memset(m,0,sizeof m);}}ans,c;int n,mo=1e3;jv cheng(jv x,jv y){ jv z; for(int i=1;i<=8;i++) for(int j=1;j<=8;j++) for(int k=1;k<=8;k++)if(k!=5) z.m[i][j]=(z.m[i][j]+x.m[i][k]*y.m[k][j])%mo; return z;}int main(){ scanf("%d",&n); n--; for(int i=1;i<=8;i++) for(int j=1;j<=8;j++) c.m[i][j]=a[i][j]; ans=c; while(n){ if(n&1)ans=cheng(ans,c); n>>=1; c=cheng(c,c); } printf("%d",ans.m[1][5]);}
转载于:https://www.cnblogs.com/largecube233/p/6797852.html