杭电2047

来源:互联网 发布:世嘉 倒闭 知乎 编辑:程序博客网 时间:2024/05/17 03:07

用两个数组保存3和2,然后就容易计算了,记得数组保存要用long long型

#include<iostream>

using namespace std;
int main()
{
      int n,i;
      long long f[60],g[60];
      f[2]=2;
      g[2]=1;
      for(i=3;i<60;i++)
      {
                f[i]=2*(f[i-1]+g[i-1]);
                g[i]=f[i-1];
      }
      while(cin>>n)
      {
                 if(n==1)
                            cout<<'3'<<endl;
                 else
                            cout<<3*f[n]+2*g[n]<<endl;
      }  
}