1. 程式人生 > >HDU 2077 漢諾塔IV

HDU 2077 漢諾塔IV

漢諾塔IV

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9723    Accepted Submission(s): 6848  

Problem Description

還記得漢諾塔III嗎?他的規則是這樣的:不允許直接從最左(右)邊移到最右(左)邊(每次移動一定是移到中間杆或從中間移出),也不允許大盤放到小盤的上面。xhd在想如果我們允許最大的盤子放到最上面會怎麼樣呢?(只允許最大的放在最上面)當然最後需要的結果是盤子從小到大排在最右邊。

Input

輸入資料的第一行是一個數據T,表示有T組資料。 每組資料有一個正整數n(1 <= n <= 20),表示有n個盤子。

Output

對於每組輸入資料,最少需要的擺放次數。

Sample Input

2

1

10

Sample Output

2

19684

//相當於 最後一個單獨處理
#include<iostream>
using namespace std;
long long int hanoi( int n ){

  if( n ==1)
  return 2;
  else return 3* hanoi( n-1)+2; 	
 
}
int main(void){
	
	int t;
	scanf("%d",&t);
	while( t--){
		
		int n;
		scanf("%d",&n);
		if( n == 1)
		 printf("2\n");
	  else printf("%lld\n",hanoi( n-1 ) +2);
		 
	}
	
	
	return 0;
}