baim. • 5个月前
using namespace std;
const ll bit=1e9; struct nb {
ll a[M];
int l;
nb(){memset(a,0,sizeof(a)),l=0;}
ll &operator [](int x){return a[x];}
void operator =(int x){a[0]=x;}
void operator +=(int x)
{
int i=0;
a[0]+=x;
while(a[i]>=bit)
{
a[i]-=bit;
a[i+1]++;
i++;
}
if(a[l+1])l++;
}
void operator *=(int x)
{
int i=0;
ll rest=0;
for(i=0;i<=l;i++)
{
a[i]=a[i]*x+rest;
rest=a[i]/bit;
a[i]%=bit;
}
if(rest)a[++l]=rest;
}
void operator -=(nb b)
{
int i=0;
for(i=0;i<=b.l;i++)
{
a[i]-=b[i];
if(a[i]<0)a[i]+=bit,a[i+1]--;
}
while(a[i]<0)a[i]+=bit,a[i+1]--,i++;
while(l>0&&a[l]==0)l--;
}
void print()
{
printf("%lld",a[l]);
for(int i=l-1;i>=0;i--)
printf("%09lld",a[i]);
}
}f[N]; int main() {
int i,n;
scanf("%d",&n);
f[1]=1,f[2]=5,f[3]=16;
for(i=4;i<=n;i++)
{
f[i]=f[i-1];
f[i]*=3;
f[i]-=f[i-2];
f[i]+=2;
}
f[n].print();
return 0;
}
评论: