1. 程式人生 > >HDU ACM1996——漢諾塔VI

HDU ACM1996——漢諾塔VI

漢諾塔VI

Problem Description

n個盤子的漢諾塔問題的最少移動次數是2n-1,即在移動過程中會產生2n個系列。由於 發生錯移產生的系列就增加了,這種錯誤是放錯了柱子,並不會把大盤放到小盤上,即各柱 子從下往上的大小仍保持如下關係 : n=m+p+q a1>a2>…>am b1>b2>…>bp c1>c2>…>cq 計算所有會產生的系列總數.

Input

包含多組資料,首先輸入T,表示有T組資料.每個資料一行,是盤子的數 目N<30.

Output

對於每組資料,輸出移動過程中所有會產生的系列總數。

Sample Input

3 1 3 29

Sample Output

3 27 68630377364883

題解:這是一道找規律的題目,放一個盤子有3種可能,所以n個盤子即是3^n。

#include<stdio.h>
int main()
{
	int n,j,i,c;
	int a[100];
	long long int b[100];
	while(scanf("%d",&n)!=EOF){
		for(i=0;i<n;i++)
			scanf("%d",&a[i]);
		for(i=0;i<n;i++){
			b[i]=1;
			for(j=0;j<a[i];j++)
				b[i]=b[i]*3;
		}
		for(i=0;i<n;i++)
			printf("%lld\n",b[i]);
	}
	return 0;
 }