记录编号 77607 评测结果 AAAAAAAAAA
题目名称 [NOIP 2007]Hanoi双塔问题 最终得分 100
用户昵称 Gravatarraywzy 是否通过 通过
代码语言 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;
}