zoukankan      html  css  js  c++  java
  • CDZSC_2015寒假新人(2)——数学

    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
     
    题解:排列组合,例如n = 3,忽略前面一个1,那么后面就有两个空位,可以填0个1,1个1和2个1,再加回原本的1,那么就是 1 * C(0, 2) + 2 * C(1, 2) + 3 * C(2, 2) = 1 * 1 + 2 * 2 + 3 * 1 = 8, 其他以此类推(注C(a, b) 即为组合数),其中为了简化计算建了两个表。详见代码。
     
     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 const int MAX = 24;
     5 int arr[MAX][MAX];
     6 
     7 int main()
     8 {
     9 #ifdef CDZSC_OFFLINE
    10     freopen("in.txt", "r", stdin);
    11     freopen("out.txt", "w", stdout);
    12 #endif
    13     int t, n, sum, ans[MAX];
    14     memset(arr, 0, sizeof(arr));
    15     memset(ans, 0, sizeof(ans));
    16     for(int i = 0; i < MAX; i++)
    17     {
    18         arr[i][0] = 1;
    19         for(int j = 1; j < i; j++)
    20         {
    21             arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
    22         }
    23         arr[i][i] = 1;
    24     }
    25     for(int i = 1; i < MAX; i++)
    26     {
    27         sum = 0;
    28         for(int j = 1; j <= i; j++)
    29         {
    30             sum += j * arr[i - 1][j - 1];
    31         }
    32         ans[i] = sum;
    33     }
    34     scanf("%d", &t);
    35     while(t--)
    36     {
    37         scanf("%d", &n);
    38         printf("%d
    ", ans[n]);
    39     }
    40     return 0;
    41 }
    View Code
  • 相关阅读:
    【Vijos-P1512】SuperBrother打鼹鼠-二维树状数组
    HTTP::Request
    HTTP::Request
    LWP::UserAgent
    perl json模块
    perl json模块
    perl 处理perl返回的json
    perl 处理perl返回的json
    perl中 wx返回的json需要encode_utf8($d);
    perl中 wx返回的json需要encode_utf8($d);
  • 原文地址:https://www.cnblogs.com/LiuACG/p/4246934.html
Copyright © 2011-2022 走看看