四塔問題
【描述】
“漢諾塔”,是一個眾所周知的古老游戲?,F在我們把問題稍微改變一下:如果一共有4根柱子,而不是3根,那么至少需要移動盤子多少次,才能把所有的盤子從第1根柱子移動到第4根柱子上呢?
為了編程方便,您只需要輸出這個結果mod 10000的值。
【輸入】
一個正整數n。(0<n<=50000)
【輸出】
一個正整數,表示把n個盤子從第1根柱子移動到第4根柱子需要的最少移動次數mod 10000的值。
【樣例輸入】
15
【樣例輸出】
129
【分析】
弄出前幾個數,發現規律。
f[1]=1,之后分別是加2個2,加3個4,加4個8,加5個16……
1: #include <stdio.h>2: #define maxn 500103:4: int a,b;
5: int k=1,t;
6: long long j=1;7: int n;
8:9: int main()
10: {11: freopen("hnoi.in","r",stdin);12: freopen("hnoi.out","w",stdout);13:14: scanf("%d",&n);
15: b=1;16: for (int i=2;i<=n;++i)17: {18: a=b;19: if (!t)
20: {21: t=++k;22: j*=2;23: j%=10000;24: }25: b=(a+j)%10000;26: --t;27: }28: printf("%d\n",b);
29: return 0;
30: }31:
posted on 2010-09-02 11:27 Sephiroth Lee 閱讀(330) 評論(0) 編輯 收藏 引用 所屬分類: 信息奧賽