> 说明
这是之前做这道题的方法,输出的是把全部塔从A移至到C的总步数。(因为以后还要发一条是输出过程的,所以区分一下哈)。
> 代码
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=100;
int a[maxn],n;
void ooo1()
{
a[maxn-1]++;
int s,g=0;
for(int i=maxn-1;i>=0;i--)
{
s=a[i]+g;
a[i]=s%10;
g=s/10;
}
}//累加1
void ooo()
{
int s,g=0;
for(int i=maxn-1;i>=0;i--)
{
s=a[i]*2+g;
a[i]=s%10;
g=s/10;
}
}//乘2
void output()
{
int i=0;
while(a[i]==0&&i<maxn-1) i++;
for(int j=i;j<maxn;j++)
printf("%d",a[j]);
}//输出
int main()
{
scanf("%d",&n);
a[maxn-1]=1;
for(int i=2;i<=n;i++)
{
ooo(); ooo1();
}
ooo();
output();
return 0;
}