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
  • 相关阅读:
    1046 Shortest Distance (20 分)(模拟)
    1004. Counting Leaves (30)PAT甲级真题(bfs,dfs,树的遍历,层序遍历)
    1041 Be Unique (20 分)(hash散列)
    1036 Boys vs Girls (25 分)(查找元素)
    1035 Password (20 分)(字符串处理)
    1044 Shopping in Mars (25 分)(二分查找)
    onenote使用小Tip总结^_^(不断更新中...)
    1048 Find Coins (25 分)(hash)
    三个故事
    领导者的举止
  • 原文地址:https://www.cnblogs.com/LiuACG/p/4246934.html
Copyright © 2011-2022 走看看