URAL 1117. Hierarchy 数学 找规律 二叉树
来源:互联网 发布:淘宝页面怎么做 编辑:程序博客网 时间:2024/05/16 11:45
十分佩服DC学长,问他递推公式怎么得到的,他说他在纸上一划拉就划拉出来了,好吧。。。。。不过在他的指点下,还有题解的帮助下,我又仔细想了想,终于把这道题悟出来了。
1.一次递推出1——2,1——4,……1——2^k所需的步骤,这个可以找规律的。
k=1时,即1——2, 步数:0
k=2时,即1——4, 步数:1
k=3时,即1——8, 步数:4
k=4 时,即1——16, 步数:11
k=5时,即1——32, 步数: 26
可以发现1,4,11,26,后面一个比前一个大3,7,15,即2^(k-1)-1
2.求A到B的步数可以转化为1到B的步数减1到A的步数。
3.求1到a的步数如1——24.=(1——16)+(16——17)+(17——24) 而(17——24)就相当于1——8(24-16)。同样找规律可以发现2^k到2^k+1所需步数是k-1
#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#define LL long longusing namespace std;LL d[100]= {0};void inlinee(){ d[2]=1; for(int i=3; i<=31; i++) { d[i]=d[i-1]+(1LL<<(i-1))-1; }}LL comp(LL a){ LL ans=0; for(int i=31; i>=0; i--) { if((1LL<<i)<=a) { ans+=d[i]; a-=(1LL<<i); if(a>0) ans+=i-1; } } return ans;}int main(){ //freopen("in.txt","r",stdin); LL start,end; cin>>start>>end; inlinee(); LL s=comp(start); LL e=comp(end); cout<<(s>e?s-e:e-s)<<endl; return 0;}
- URAL 1117. Hierarchy 数学 找规律 二叉树
- URAL - 1117 Hierarchy(找规律)
- URAL 1295 Crazy Notions 数学 找规律
- URAL 1295. Crazy Notions(数学啊 & 找规律)
- 数学+找规律题
- 【lightoj1008】数学找规律
- 数学- 找规律 HDU3054
- 数学找规律 number
- URAL 1117. Hierarchy
- URAL 1051 跳跳棋(孔明棋)(加强版) 数学找规律(较弱哦)
- SGU 105 数学找规律
- POJ 1019 数学找规律
- 数学 找规律HDU-1030
- 【数学期望 && 找规律】HDU
- ural 1260(找规律)
- URAL 1502. Domino Dots (找规律)
- UVA - 679 Dropping Balls 二叉树找规律
- hdu 5584 LCM Walk <二叉树找规律,二进制相关>
- 位运算简介及实用技巧(二):进阶篇(1)
- Unit的一些问题解答
- java中静态的代码块,静态变量,静态方法
- UVa 993 Product of digits(简单数论)
- StarUML的简单使用【转】
- URAL 1117. Hierarchy 数学 找规律 二叉树
- 数论公式
- 电影票项目之页面控制Worker
- STM32 CAN 使用心得!
- 时间字符串格式相互转换——C语言
- 通过关键字订阅信息
- FAFU-OJ 1354 解方程
- 初涉android(一)
- 算法设计——流水作业