首页 > 代码库 > FZOJ 1036 四塔问题(找规律)
FZOJ 1036 四塔问题(找规律)
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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。