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