汉诺塔 X HDU - 2511
題目:
1,2,…,n表示n個盤子.數(shù)字大盤子就大.n個盤子放在第1根柱子上.大盤不能放在小盤上.在第1根柱子上的盤子是a[1],a[2],…,a[n]. a[1]=n,a[2]=n-1,…,a[n]=1.即a[1]是最下面的盤子.把n個盤子移動到第3根柱子.每次只能移動1個盤子,且大盤不能放在小盤上.問第m次移動的是哪一個盤子,從哪根柱子移到哪根柱子.例如:n=3,m=2. 回答是 :2 1 2,即移動的是2號盤,從第1根柱子移動到第2根柱子 。
Input
第1行是整數(shù)T,表示有T組數(shù)據(jù),下面有T行,每行2個整數(shù)n (1 ≤ n ≤ 63) ,m≤ 2^n-1
Output
輸出第m次移動的盤子號數(shù)和柱子的號數(shù).
Sample Input
4
3 2
4 5
39 183251937942
63 3074457345618258570
Sample Output
2 1 2
1 3 1
2 2 3
2 2 3
分析:
漢諾塔
一號柱有n個盤子,叫做源柱.移往3號柱,叫做目的柱.2號柱叫做中間柱.
全部移往3號柱要f(n)=(2n)?1f(n)=(2^n)-1f(n)=(2n)?1次.
最大盤n號盤在整個移動過程中只移動一次,n-1號移動2次,i號盤移動2(n?i)2^{(n-i)}2(n?i)次.
1號盤移動次數(shù)最多,每2次移動一次.
第2k+1次移動的是1號盤,且是第k+1次移動1號盤.第4k+2次移動的是2號盤,且是第k+1次移動2號盤.
第(2s)k+2(s?1)(2^{s})k+2^{(s-1)}(2s)k+2(s?1)移動的是s號盤,這時s號盤已被移動了k+1次.每2s2^s2s次就有一次是移動s號盤.
第一次移動s號盤是在第2(s?1)2^{(s-1)}2(s?1)次.
第二次移動s號盤是在第2s+2(s?1)2^s+2^{(s-1)}2s+2(s?1)次.
…
第k+1次移動s號盤是在第k?2s+2(s?1)k*2^{s}+2^{(s-1)}k?2s+2(s?1)次.1–2--3–1叫做順時針方向,1–3--2–1叫做逆時針方向.
最大盤n號盤只移動一次:1–3,它是逆時針移動.
n-1移動2次:1–2--3,是順時針移動.
如果n和k奇偶性相同,則k號盤按逆時針移動,否則順時針.
總結(jié)
以上是生活随笔為你收集整理的汉诺塔 X HDU - 2511的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用酒精擦拭电脑屏幕用酒精擦拭电脑屏幕后怎
- 下一篇: 2021年度训练联盟热身训练赛第五场 H