hdu-2502月之数(找规律)
来源:互联网 发布:爱普生r230清零软件 编辑:程序博客网 时间:2024/05/17 03:13
月之数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7922 Accepted Submission(s): 4681
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。
如果一个正整数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
3123
Sample Output
138
题目大意:统计N位二进制数中1的个数
解题思路:有题可知,N位二进制所能表示的2的N-1方个十进制数;例如,三位二进制可表示4(100)、5(101)、6(110)、7(111)四个数;而四位二进制
可表示8(1000)、9(1001)、10(1010)、12(1100)、11(1011)、14(1110)、13(1101)、15(1111)八个数;并且可推出其每个数平均含有的1的个数
为 (N+1)/2个;如N == 3时;共有8个1,则平均每个数含有的1的个数为8 / 4 = 2个,即(3+1)/2;同理,N==4时;共有20个1,则每个数平均含有的1的个数为
20 / 8=2.5;即(4+1)/2;
所以N位二进制数中1的总个数为2^(n-1)*(n+1)/2;
ac代码:
#include<stdio.h>#include<math.h>int main(){int t,m,count;scanf("%d",&t);while(t--){scanf("%d",&m);count=pow(2,m-1)*(m+1)/2;printf("%d\n",count);}return 0; }
0 0
- hdu-2502月之数(找规律)
- HDU--2502月之数【水题】【规律】
- hdu (找规律)
- hdu 2608(找规律)
- hdu 1165(找规律)
- hdu 5439(找规律)
- hdu 6129(找规律)
- hdu 5963(找规律)
- hdu 2502 月之数(水)
- HDU 2502 月之数(水~)
- hdu 2502 月之数(数学)
- HDU 2502 - 月之数
- hdu 2502月之数
- HDU 2502 月之数
- hdu 2502 月之数
- hdu-2502-月之数
- HDU 2502 月之数
- hdu 2502月之数
- Android学习笔记(十三)
- 证明2的方幂中交换任意两位之后绝不是2的整数次幂
- Unity 理解刚体(Rigidbody)和碰撞体(Collider)和触发器(Is Trigger)以及刚体休眠(Rigidbody Sleeping)
- expect脚本
- 强制转换数据溢出
- hdu-2502月之数(找规律)
- How to make Eclipse IDE supports JSF 2.0
- java常量池中string的问题
- Android studio安装Genymotion插件
- Android 进程常驻(1)----开篇
- matlab中的clc命令和clear命令
- Spring Data MongoDB实战(上)
- 数论总结1
- 泛型集合和泛型委托