记录编号 |
150330 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2007]Hanoi双塔问题 |
最终得分 |
100 |
用户昵称 |
0 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.004 s |
提交时间 |
2015-02-28 20:45:03 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
string gaojing(string ,string );
int main()
{
freopen("hanoi.in","r",stdin);
freopen("hanoi.out","w",stdout);
int n;
cin>>n;
string a="2";
string b="2";
for(int i=2;i<=n;++i)
a=gaojing(gaojing(a,a),b);
cout<<a;
return 0;
}
string gaojing(string a,string b)
{
int js[200];
int a1[200]={0};
int a2[200]={0};
int x=0;
int y=0;
string liehuo;
for(int i=a.size()-1;i>=0;--i)
{
x++;
a1[x]=a[i]-48;
}
for(int j=b.size()-1;j>=0;--j)
{
y++;
a2[y]=b[j]-48;
}
int max=x>y? x:y;
for(int i=1;i<=max+1;++i)
{
js[i]=(a1[i]+a2[i])%10;
a1[i+1]+=(a1[i]+a2[i])/10;
}
for(int i=max+1;i>=1;--i)
{
if(i==max+1&&js[i]==0)
continue;
liehuo+=js[i]+48;
}
return liehuo;
}