基尔霍夫矩阵(我也不知道是什么)推出f[i]=(f[i-1]*3-f[i-2]+2)(这其实是我抄的)
还是要高精的。
1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 int f[102][102],n; 5 void mul(int a1) 6 { 7 f[a1][0]=f[a1-1][0]; 8 for(int i=1;i<=f[a1-1][0];i++) 9 { 10 f[a1][i]+=f[a1-1][i]*3; 11 f[a1][i+1]+=f[a1][i]/10; 12 f[a1][i]%=10; 13 } 14 if(f[a1][f[a1][0]+1]) 15 f[a1][0]++; 16 return; 17 } 18 void jia(int a1) 19 { 20 f[a1][1]+=2; 21 for(int i=1;i<=f[a1][0];i++) 22 { 23 f[a1][i]-=f[a1-2][i]; 24 if(f[a1][i]<0) 25 { 26 f[a1][i+1]--; 27 f[a1][i]+=10; 28 } 29 } 30 for(;f[a1][f[a1][0]]==0;) 31 f[a1][0]--; 32 return; 33 } 34 int main() 35 { 36 scanf("%d",&n); 37 f[1][0]=1; 38 f[1][1]=1; 39 f[2][0]=1; 40 f[2][1]=5; 41 for(int i=3;i<=n;i++) 42 { 43 mul(i); 44 jia(i); 45 } 46 for(int i=f[n][0];i;i--) 47 printf("%d",f[n][i]); 48 return 0; 49 }