您的位置:首页 > 其它

HDU 2502 月之数

2015-08-24 13:54 218 查看

月之数

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 7914 Accepted Submission(s): 4676



[align=left]Problem Description[/align]
当寒月还在读大一的时候,他在一本武林秘籍中(据后来考证,估计是计算机基础,狂汗-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。

[align=left]Input[/align]
给你一个整数T,表示输入数据的组数,接下来有T行,每行包含一个正整数 n(1<=n<=20)。

[align=left]Output[/align]
对于每个n ,在一行内输出n对应的月之数。

[align=left]Sample Input[/align]

3
1
2
3


[align=left]Sample Output[/align]

1
3
8


[align=left]Source[/align]
《ACM程序设计》短学期考试_软件工程及其他专业

注意:pow的使用

原型:在TC2.0中原型为extern float pow(float x, float y); ,而在VC6.0中原型为double pow( double x, double y );

头文件:math.h/cmath(C++中)

功能:计算x的y次幂。

返回值:x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果。

返回类型:double型,int,float会给与警告!

C++提供以下几种pow函数的重载形式:

double pow(double X,int Y);

float pow(float X,float Y);

float pow(float X,int Y);

long double pow(long double X,long double Y);

long double pow(long double X,int Y);

使用的时候应合理设置参数类型,避免有多个“pow”实例与参数列表相匹配的情况。

其中较容易发生重载的是使用形如:

int X,Y;

int num=pow(X,Y);

这是一个比较常用的函数,但是编译器会提醒有多个“pow”实例与参数列表相匹配。

可以使用强制类型转换解决这个问题:num=pow((float)X,Y);

#include<stdio.h>
#include<math.h>
int main (void)
{
int n,T;
scanf("%d",&T);
int a[25];
a[1]=1;
for( int i=2;i<=20;i++)
{
a[i]=2*a[i-1]+pow((float)2,i-2);
}
while(T--)
{
scanf("%d",&n);
printf("%d\n",a
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: