HDU 2502 月之数

来源:互联网 发布:arcgis批处理python 编辑:程序博客网 时间:2024/04/28 20:29

月之数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7914    Accepted Submission(s): 4676


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
3123
 


 

Sample Output
138
 


 

Source
《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[n]);    }    return 0;}


 

0 0