基尔霍夫矩阵(我也不知道是什么)推出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 } 

 

posted on 2016-02-27 21:58  xiyuedong  阅读(154)  评论(0编辑  收藏  举报