易妖游戏网
您的当前位置:首页(低内存)高精度解决汉诺塔

(低内存)高精度解决汉诺塔

来源:易妖游戏网
#include <stdio.h>
int a[2][8000];
int main(){
	int n;
	scanf("%d",&n);
	if(n==0){
		printf("0");return 0;
	}
	a[1][1]=2;
	int flag=0,sign=1,j;
	for(int i=2;i<=n;i++){
		flag=0;
		for( j=1;;j++){
			if(j==sign){
			a[i%2][j]=(a[!(i%2)][j]*2+flag)%10;
			a[(i%2)][j+1]=(a[!(i%2)][j]*2+flag)/10;break;
			}
			a[i%2][j]=(a[!(i%2)][j]*2+flag)%10;
			flag=(a[!(i%2)][j]*2+flag)/10;
		}
		if(a[i%2][j+1]==0)sign=j;
		else sign=j+1;
	}
	a[n%2][1]--;
	flag=0;
	for(int i=7500;i>=1;i--){
		if(a[n%2][i]==0&&flag==0){
			continue;
		}
		flag=1;
		printf("%d",a[n%2][i]);
	}
	return 0;
}

因篇幅问题不能全部显示,请点此查看更多更全内容