hoj 1009月之数
来源:互联网 发布:免费聊天视频软件 编辑:程序博客网 时间:2024/05/08 06:51
此题可以将先将数字换成二进制然后再逐个+ (反正二进制只有1和0)
月之数
Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 3 Accepted Submission(s) : 3
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
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
Source
《ACM程序设计》短学期考试_软件工程及其他专业
代码:
#include<stdio.h>
//#include<stdlib.h>
int f( int m )
{
int y =1;
for( int i=0; i < m; i ++)
y *= 2;
return y;
}
int main()
{
int n, m, i, j, sum;
scanf( "%d", &n );
while( n -- )
{
scanf( "%d", &m );
sum = 0;
for( i = f(m -1); i < f(m); i ++ ) //二进制位为 m个的 数
for( j = i; j != 0; j /= 2)
sum = sum + (j%2);
/*while(i)
{
sum += (i%2);
i /= 2;
}*/
printf( "%d\n", sum );
}
//system ( "pause" );
}
0 0
- hoj 1009月之数
- HDU2502:月之数
- hdu2502 月之数
- 2502 月之数
- hdu 月之数
- 月之数
- HDU 月之数
- 月之数
- 月之数
- 2502 月之数
- 月之数
- 月之数
- HDU2502:月之数
- hdu2502:月之数
- HDU2502 月之数
- hdoj2502 月之数
- HDOJ 2502月之数
- HDU 2502 - 月之数
- nyoj57 6174问题
- hdoj1032 3n+1问题
- Spring MVC入门
- nyoj笨小熊
- 使用#include
- hoj 1009月之数
- hoj 1003 A-B
- hdoj ’5‘为空格 排序
- nyoj 32 组合数
- nyoj263 精挑细选
- nyoj477A+B Problem III
- nyoj26孪生素数问题
- nyoj448寻找最大数
- nyoj88