记录编号 |
77607 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2007]Hanoi双塔问题 |
最终得分 |
100 |
用户昵称 |
raywzy |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.005 s |
提交时间 |
2013-11-02 09:36:20 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include<fstream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
ifstream fin("hanoi.in");
ofstream fout("hanoi.out");
string Add(string A,string B)
{
int LA,LB,LMAX,i;
int temp,G=0;//G进位
int a[1000],b[1000],c[1000];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
LA=A.length();LB=B.length();
LMAX=max(LA,LB);
for(i=LA-1;i>=0;i--)
a[LA-i]=int(A[i]-48);
for(i=LB-1;i>=0;i--)
b[LB-i]=int(B[i]-48);
for(i=1;i<=LMAX+1;i++)
{
temp=a[i]+b[i]+G;
c[i]=temp%10;
G=temp/10;
}
string C="";
if(c[LMAX+1]!=0)
LMAX++;
for(i=LMAX;i>=1;i--)
C+=char(c[i]+48);
return C;
}
int main()
{
int N,i;
fin>>N;
string A,B;
if(N==1)
{
fout<<2<<endl;
return 0;
}
if(N==2)
{
fout<<6<<endl;
return 0;
}
A="1";
B="2";
for(i=1;i<=N-1;i++)
{
B=Add(B,B);
B=Add(B,"2");
}
fout<<B<<endl;
return 0;
}