#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);
}poj 1920 汉诺塔移动到某一种指定位置的最小步数
最新推荐文章于 2026-05-01 13:06:32 发布
本文展示了一个使用C++实现的特定算法案例,该算法涉及数组处理、动态规划及模运算等关键技术点。通过递推计算并利用数组记录状态,解决了一个关于数列的问题。文章中的代码实现了输入处理、状态更新及最终结果输出等功能。

1450

被折叠的 条评论
为什么被折叠?



