1 #include 2 #include 3 #define MOD 10000 4 using namespace std; 5 struct sb 6 { 7 int a[2][2]; 8 }; 9 sb mul(sb x,sb y)10 {11 sb res;12 memset(res.a,0,sizeof(res.a));13 for (int i=0;i<2;i++)14 for (int j=0;j<2;j++)15 for (int k=0;k<2;k++)16 res.a[i][j]=(res.a[i][j]+x.a[i][k]*y.a[j][k])%MOD;17 return res;18 }19 void mat_pow(int n)20 {21 sb res,c;22 c.a[0][0]=c.a[0][1]=c.a[1][0]=1;23 c.a[1][1]=0;24 memset(res.a,0,sizeof(res.a));25 for (int i=0;i<2;i++) res.a[i][i]=1;26 while (n)27 {28 if (n&1!=0) res=mul(res,c);29 c=mul(c,c);30 n>>=1;31 } 32 cout< < >n&&n!=-1)38 mat_pow(n);39 }