OJ题目:click here~~
题目分析:四塔问题,n个盘,从塔1,到塔4,至少需要多少步。
这里n的范围是( 0 , 50000 ] ,所以不能直接用四塔算法。这里找规律就可以了。
AC_CODE
const int mod = 10000; const int Max_N = 50002; int dp[Max_N]; int main() { int i , j = 0, k = 2, t = 2; dp[1] = 1; for(i = 2;i <= Max_N-2;i++){ j++; dp[i] = (dp[i - 1] + t) % mod; if(j == k){ j = 0; k++; t *= 2; t %= mod; } } int n; while(scanf("%d",&n) != EOF) cout << dp[n] << endl; return 0; }
FZOJ 1036 四塔问题(找规律),布布扣,bubuko.com
原文:http://blog.csdn.net/bolininahuaalex/article/details/25077813