#include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <algorithm> using namespace std; #define LL long long const int mod=1024; struct matrix{ int f[2][2]; }; matrix mul(matrix a,matrix b) { matrix c; memset(c.f,0,sizeof(c.f)); int i,j,k; for(k=0;k<2;k++) { for(i=0;i<2;i++) { if(!a.f[i][k])continue; for(j=0;j<2;j++) { if(!b.f[k][j])continue; c.f[i][j]=(c.f[i][j]+a.f[i][k]*b.f[k][j])%mod; } } } return c; } matrix pow_mod(matrix a,int b) { matrix s; int i,j; for(i=0;i<2;i++) for(j=0;j<2;j++) s.f[i][j]=(i==j?1:0); while(b) { if(b&1) s=mul(s,a); a=mul(a,a); b=b>>1; } return s; } int main() { int T; cin>>T; while(T--) { int n; cin>>n; int p,q; p=10;q=-1; matrix e; e.f[0][0]=p;e.f[0][1]=1; e.f[1][0]=q;e.f[1][1]=0; e=pow_mod(e,n-1); int ans=0; ans=(10*e.f[0][0]+2*e.f[1][0]-1)%mod; cout<<(ans+mod)%mod<<endl; } return 0; } /* (sqrt(2)+sqrt(3))^(2*n)=(5+2*sqrt(6))^n 二项式展开下就可以知道(5+2*sqrt(6))^n+(5-2*sqrt(6))^n为整数 0<5-2*sqrt(6)<1,令a=5+2*sqrt(6),b=5-2*sqrt(6),p=a+b,q=-a*b,f[n]=a^n+b^n; 答案ans=f[n]-1; f[n]=(a+b)*f[n-1]-a*b*f[n-2]; 得到矩阵: |f[n-1] f[n-2]|*|p 1|=|f[n] f[n-1]| |q 0| 求解矩阵乘法就可得到答案 */