FZU 1036 四塔问题(规律)
来源:互联网 发布:seo与sem的异同 编辑:程序博客网 时间:2024/05/21 09:24
“汉诺塔”,是一个众所周知的古老游戏。现在我们把问题稍微改变一下:如果一共有4根柱子,而不是3根,那么至少需要移动盘子多少次,才能把所有的盘子从第1根柱子移动到第4根柱子上呢?
为了编程方便,您只需要输出这个结果mod 10000的值。
Input
该题含有多组测试数据,每组一个正整数n。(0< n<=50000)
Output
一个正整数,表示把n个盘子从第1根柱子移动到第4根柱子需要的最少移动次数mod 10000的值。
Sample Input
15
Sample Output
129
解题思路:
把前面几个算出来,得到如下规律:
f[1] : 0 +2^0=1;
f[2] : 1 +2^1=3;
f[3] : 3 +2^1=5;
f[4] : 5 +2^2=9;
f[5] : 9 +2^2=13;
f[6] : 13+2^2=17;
f[7] : 17+2^3=25;
f[8] : 25+2^3=33;
f[9] : 33+2^3=41;
f10] : 41+2^3=49;
f[11]: 49+2^4=65;
即,f[i]-f[i-1]的值是有规律的,1个2^0,2个2^1,3个2^2,4个2^3,5个2^4以此类推。
#include<cstdio> #include<algorithm> using namespace std; const int N=2e5+5;int n,f[N]; void init() { int a=0,b=1; f[0]=0; for(int i=1;i<N;) { for(int j=0;j<=a&&i<N;j++,i++) f[i]=(f[i-1]+b)%10000; a++; (b<<=1)%=10000; } }int main() { init(); while(~scanf("%d", &n)) printf("%d\n", f[n]); return 0; }
0 0
- FZU 1036 四塔问题(规律)
- FZU 1036 四塔问题
- fzu 1036 四塔问题
- FZU 1036 四塔问题
- FZU 1062 洗牌问题(打表找规律)
- FZOJ 1036 四塔问题(找规律)
- FZU 2147(数学,规律)
- 四塔问题 ssl 2632 规律题
- #个人赛第七场解题总结# (FZU 1881三角形问题 找规律 &&FZU 1884 排火车 模拟)
- FZU 2206 函数求解(找规律)
- FZU 2102 Solve equation(规律题)
- FZU 2147(找规律)
- fzu 1911 Construct a Matrix(矩阵快速幂+规律)
- FZU 1848 – ZeroZeroZeros (找规律+二分)
- FZU 2140 Forever 0.5(找规律,几何)
- Fzu 2206 函数求解【规律】
- FZU汇编作业 实验(四)
- FZU 2027 单词问题(字符串问题)
- halcon在VS2013开发环境下的C#编程
- Java中Math.random()获取随机数的用法
- 1.4.2冒泡法(先排序再去重)
- 链表菜单之初级版
- DeepMind组建美国团队:加强与谷歌的联系
- FZU 1036 四塔问题(规律)
- leetcode144. Binary Tree Preorder Traversal
- 基于How To Tango With Django 1.9的重新实践(0-5)
- HDU3488-Tour
- 归并排序实现及时间复杂度分析
- [BZOJ 1005][HNOI2008]明明的烦恼(prufer编码+组合数学+高精度)
- 【BZOJ1076】【SCOI2008】奖励关(期望+状压dp)
- 盾神与条状项链
- android:versionCode和android:versionName