题目大意
在原来汉诺塔的基础上,一柱不能直接移到三柱,问 柱, 次挪动后,所以盘子的位置
解题思路
暴力打表找规律,你就可以发现它是酱紫的
盘子标号 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 3 | 2 | 1 | 1 | 2 | 3 | 3 | 2 | 1 | |
1 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 |
所以说,他就是123321123321,只不过每次长度不一样罢了(逃
代码
#include<cstdio>
#include<cmath>
using namespace std;int t,n,san[20];
long long m;
int main()
{
scanf("%d",&t);
san[0]=1;san[1]=3;
for(int i=2;i<=19;i++) san[i]=san[~-i]*3;
while(t--)
{
scanf("%d%lld",&n,&m);
for(int i=1,k;i<=n;i++)
{
k=m/san[~-i];//计算每次的长度
if(k%6==0||k%6==5)printf("1");
if(k%6==1||k%6==4)printf("2");
if(k%6==2||k%6==3)printf("3");//输出
if(i!=n) putchar(32);//空格
}
if(t)putchar(10);//换行
}
}