阅读背景:

poj 1920 汉诺塔移动到某一种指定位置的最小步数

来源:互联网 
#include<cstdio>
#include<cstring>
#define MOD 1000000
int main()
{
	int n,pow[100010],num[6],lo[100010];
	scanf("%d",&n);
	pow[0]=1;
	for(int i=1;i<=n;i++)
	pow[i]=(pow[i-1]*2)%MOD;
	scanf("%d%d%d",&num[1],&num[2],&num[3]);
	for(int i=1;i<=3;i++)
	for(int j=1;j<=num[i];j++)
	{
		int x;
		scanf("%d",&x);
		lo[x]=i;
	} 
	int res=0,tem,begin,end;
	begin=end=lo[n];
	printf("%d\n",lo[n]);
	while(n)
	{
		if(begin!=end)
		{
			res=(res+pow[n-1])%MOD;
			end=tem;
		}
		n--;
		begin=lo[n];
		tem=6-begin-end;
	}
	printf("%d\n",res); 
}#include<cstdio>
#include<cstring>
#define MOD 



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: