HDU ACM1996——漢諾塔VI
阿新 • • 發佈:2018-12-12
漢諾塔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; }