zoukankan      html  css  js  c++  java
  • hdu 1133 Buy the Ticket

    首先,记50的为0,100的为1.

    当m=4,n=3时,其中的非法序列有0110010;

    从不合法的1后面开始,0->1,1->0,得到序列式0111101

    也就是说,非法序列变为了n-1个0,m+1个1.

    总的数目=C(m+n,n),非法的=C(m+n,m+1)

    符合数目=(C(m+n,n)-C(m+n,m+1))*m!*n!;

    化简得:(m+n)!*(m+1-n)/(m+1).

    Java代码:

     1 import java.io.*;
     2 import java.math.*;
     3 import java.math.BigInteger;
     4 import java.lang.String.*;
     5 import java.util.*;
     6 public class Main
     7 {
     8     public static BigInteger [] p;
     9     public static void main(String arg[])
    10     {
    11         int i;
    12         p = new BigInteger[201];
    13         p[0]=BigInteger.valueOf(1);
    14         for(i=1;i<=200;i++)
    15             p[i]=p[i-1].multiply(BigInteger.valueOf(i));
    16         Scanner cin = new Scanner(System.in);
    17         int k=1;
    18         while(true)
    19         {
    20             int m = cin.nextInt();
    21             int n = cin.nextInt();
    22             if(m==0&&n==0) break; System.out.println("Test #"+k+++":");
    23             if(m<n)
    24                 System.out.println("0");
    25             else
    26                 System.out.println(p[m+n].multiply(BigInteger.valueOf(m+1-n)).divide(BigInteger.valueOf(m+1)).toString());
    27         }
    28     }
    29 }
    View Code
  • 相关阅读:
    哈夫曼编码拓展题
    TrieTree
    并查集
    hash一致性
    布隆过滤器
    如何计算完全二叉树的结点数?
    如何翻转单链表和双向链表
    如何判断是搜索二叉树与完全二叉树
    文本分类之特征描述vsm和bow
    文本分类概述
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3203519.html
Copyright © 2011-2022 走看看