月之数

Problem Description
当寒月还在读大一的时候,他在一本武林秘籍中(据后来考证,估计是计算机基础,狂汗-ing),发现了神奇的二进制数。
如果一个正整数m表示成二进制,它的位数为n(不包含前导0),寒月称它为一个n二进制数。所有的n二进制数中,1的总个数被称为n对应的月之数。
例如,3二进制数总共有4个,分别是4(100)、5(101)、6(110)、7(111),他们中1的个数一共是1+2+2+3=8,所以3对应的月之数就是8。
Input
给你一个整数T,表示输入数据的组数,接下来有T行,每行包含一个正整数 n(1<=n<=20)。
 
Output
对于每个n ,在一行内输出n对应的月之数。
 
Sample Input
3
1
2
3

 
Sample Output
1
3
8
分析:
  1二进制数有1个:  1
  2二进制数有2个:10 11
  3二进制数有4个:100 101 110 111
  4二进制数有8个:1000 1001 1010 1011 1100 1101 1110 1111
  可以看到第n二进制数是第(n-1)二进制数 总数目的2倍,他们第一位都是1,所以多出来2n个1。
  所有的数字中,一半是在1后边加了第(n-1)二进制数。另一半第一位是1,第二位是0,最后的各个位跟第(n-1)二进制数中最后个各个位都相同,令f[n]表示第n二进制数中1的个数。所以多出来 f[n-1] + (f[n-1] - 2n-1) = 2*f[n-1]-2n-1
  所以可以推导出:f[n] = 2n + 2*f[n-1] -2n-1 = 2n-1 + 2*f[n-1]
代码如下:
 1 # include<stdio.h>
 2 int f[21]={0,1,3};
 3 void init(){
 4     int k=1;
 5     for(int i=3; i<21; i++){
 6         k <<= 1;
 7         f[i] = k  + 2*f[i-1];
 8     }
 9 }
10 int main(){
11     int T;
12     init();
13     scanf("%d",&T);
14     while(T--){
15         int n;
16         scanf("%d",&n);
17         printf("%d\n",f[n]);
18     }
19     return 0;
20 }

HDU 2502 月之数(简单递推)相关推荐

  1. HDU2502 月之数【递推】

    月之数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. HDOJ(HDU) 2502 月之数(进制)

    Problem Description 当寒月还在读大一的时候,他在一本武林秘籍中(据后来考证,估计是计算机基础,狂汗-ing),发现了神奇的二进制数. 如果一个正整数m表示成二进制,它的位数为n(不 ...

  3. codeforces-103A Testing Pants for Sadness(简单递推)

    链接:http://codeforces.com/problemset/problem/103/A 题意:有n个问题,每个问题有ai种回答,每次只有回答正确才能回答下一个问题.回答 错误的话要重新回到 ...

  4. HD 2048 数塔 DP(简单递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...

  5. hdu 5366 简单递推

    记f[i]为在长度是i的格子上面至少放一个木桩的方法数.考虑第i个格子,有放和不放两种情况. 1.如果第i个格子放了一个木桩,则i - 1和i - 2格子上面不能放木桩,方案数为:f[i - 3] + ...

  6. hdu 1133 Buy the Ticket(递推+精度精算)

    做这道题之前可以先做:hdu 1267(递推方法和这道题是一样的知识没有精度计算)这是我的博客链接接:http://www.cnblogs.com/jiangjing/archive/2013/01/ ...

  7. HDU 5459 Jesus Is Here (递推,组合数学)

    有点麻烦的递推,递推的原则:向小的问题方向分解,注意边界. 字符串的递推式为 定义f为Si中的总方案数 首先可以得到 fi=fi-1+fi-2+组合(si-2,si-1) 然后考虑Si-2和Si-1之 ...

  8. UVA10943简单递推

    题意:      给你两个数字n,k,意思是用k个不大于n的数字组合(相加和)为n一共有多少种方法? 思路:       比较简单的递推题目,d[i][j]表示用了i个数字的和为j一共有多少种情况,则 ...

  9. BZOJ-1002 轮状病毒 高精度加减+Kirchhoff矩阵数定理+递推

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3543 Solved: 1953 [Submit][Statu ...

最新文章

  1. 数组的选择--固定大小数组模板array存在的意义!
  2. arm ffmpeg报错:Invalid data found when processing input(没解决)(在ubuntu上能正常运行)(重新交叉编译后问题解决)
  3. android 高并发弹幕,高并发实时直播弹幕研发实践
  4. 手机访问内网IIS服务器网页的方法
  5. Java基础篇:如何使用instanceof
  6. 理发师问题报告java_操作系统-理发师问题的java模拟
  7. 目标跟踪算法的分类(二)
  8. Atitit btree 搜索原理 目录 第一节 左边小右边大 的有序树 1 第二节 平衡算法 1 第三节 层次高度一般3--4层 3 第四节 类似索引 3 第二章 Ref 5 第一节 左边小右
  9. 二进制转十六进制的详细步骤
  10. Android Q播放器(编译报错处理)
  11. python远程监控_Python实现远程端口监控实例
  12. adb 修改安卓设备的Mac地址
  13. Servlet注解和可插拔性(第八篇)
  14. 在matlab中ln10,ln函数(ln在函数中等于多少)
  15. SSRS 2008 冻结首行
  16. 云计算科普——入行半年,我这样看云计算
  17. 现代信号处理——时频分析与时频分布(时频分布的基本理论)
  18. 【matlab】自定义颜色和线形绘图
  19. JAVA小知识——换行的几种方式
  20. Linux常用命令总结(一)

热门文章

  1. VTK:可视化之VisualizeImageData
  2. VTK:图片之DrawShapes
  3. VTK:Filtering之SurfaceFromUnorganizedPointsWithPostProc
  4. OpenCV图像列表创建者imagelist creator的实例(附完整代码)
  5. C++数组的左右旋转的实现算法(附完整源码)
  6. C语言数组的深入理解
  7. C++STL的 list容器
  8. c++构造函数和析构函数的调用顺序研究
  9. 张一春教授计算机辅助教学,我校特邀评审专家张一春教授来校做专题讲座
  10. dubbo控制中心部署,权重配置,以及管控台中各个配置的简单查看