记录编号 581722 评测结果 AAAAAAAAAA
题目名称 [NOIP 2007]Hanoi双塔问题 最终得分 100
用户昵称 Gravatar┭┮﹏┭┮ 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2023-08-10 22:34:23 内存使用 0.00 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int mod = 10000;
int n;
class PHint{
public:
	int n;
	int s[100];
	PHint(){n = 1;memset(s,0,sizeof(s));}
	void operator = (int x){
		memset(s,0,sizeof(s));
		n = 1;
		s[0] = x;
	}
	void operator *= (int x){
		for(int i = n-1;i >= 0;i--){
			s[i] *= 2;
			s[i+1] += s[i] / mod;
			s[i] %= mod;
		}
		n++;
		while(n > 1 && s[n-1] == 0)n--;
	}
	void operator -= (int x){
		for(int i = 0;i < n;i++){
			if(s[i] >= x){s[i] -= x;break;}
	    }
		while(n > 1 && s[n-1] == 0)n--;
	}
	void print(void){
		printf("%d",s[n-1]);
		for(int i = n-2;i >= 0;i--)printf("%04d",s[i]);
		printf("\n");
	}
};
PHint s;
int main(){
	freopen("hanoi.in","r",stdin);
	freopen("hanoi.out","w",stdout);
	scanf("%d",&n);
	s = 2;
	for(int i = 1;i <= n;i++)s *= 2;
	s -= 2;
	s.print();
	
	return 0;
}