hdu 2502 月之数

简介: hdu 2502 月之数

月之数


 

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

 

Source

《ACM程序设计》短学期考试_软件工程及其他专业

 

 

我的想法:

直接按原理来,求组合数,代码如下。

#include<stdio.h>
#include<iostream>
using namespace std;
long long int C(int n,int m)
{
    long long int i,j,s=1,x=1;
    for(i=n;i>n-m;i--)
        s*=i;
    for(j=m;j>0;j--)
        x*=j;
    return s/x;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        long long int i,j=0,a;
        scanf("%lld",&a);
        for(i=2;i<=a;i++)
         j+=C(a-1,i-1)*i;
         printf("%lld\n",j+1);
    }
    return 0;
}

网上查了一下,发现有规律:

http://www.cnblogs.com/liudehao/p/4132937.html

目录
相关文章
|
8月前
|
Java
HDU-1686-Oulipo
HDU-1686-Oulipo
35 0
|
Java
hdu2519 新生晚会
hdu2519 新生晚会
63 0
ACM刷题之路(二十四)HDU 2844 多重背包转换 Coins
ACM刷题之路(二十四)HDU 2844 多重背包转换 Coins
109 0
HDU-2897,邂逅明下(巴什博弈)
HDU-2897,邂逅明下(巴什博弈)
|
算法
HDU - 2063: 过山车
HDU - 2063: 过山车
148 0
|
Java
HDOJ(HDU) 2502 月之数(进制)
HDOJ(HDU) 2502 月之数(进制)
117 0
HDOJ(HDU) 2519 新生晚会(组合公式)
HDOJ(HDU) 2519 新生晚会(组合公式)
133 0
|
测试技术
HDOJ(HDU) 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
HDOJ(HDU) 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
125 0