/**
  * 从n个不同的数中取m个数字的排列公式:n!/(n-m)!
  * @param m
  * @param n
  * @return
  */
 public static long getPLNumber(int m ,int n){
  long p=1;
  if(m<=0||n<=0||n<m){
   return 0;
  }
  p=getJCNumber(n)/getJCNumber(n-m);
  System.out.println("从"+n+"个不同的数中取"+m+"个数字的排列数:"+p);
  return p;
 }
 /**
       从n个不同的数中取m个数字的组合公式: n!/((n-m)!m!)
  * @param m
  * @param n
  * @return
  */
 public static long getZHNumber(int m ,int n){
  long z=1;
  if(m<=0||n<=0||n<m){
   return 0;
  }
  z=getJCNumber(n)/(getJCNumber(n-m)*getJCNumber(m));
  
  System.out.println("从"+n+"个不同的数中取"+m+"个数字的组合数:"+z);
  return z;
 }
 /**
  * 计算n的阶乘1*2*3*4。。。。n-1
  * @param n
  * @return
  */
 public static long  getJCNumber(int n){
    long result = 1;
    if((n<0) || (n>19)){  
             System.err.println("n的范围必须在1-19之间");  
             return -1;  
         }  
    for (int i = 1; i <= n; i++) {    
     result = i*result;  
     }  
    return result;
   }

 public static void main(String[] args) {
//  List list = partitionBy1("01 02 03 04 05 06 07:08|01 02 03 04 05 06 07:08|01 02 03 04 05 06 07:08|01 02 03 04 05 06 07:08|01 02 03 04 05 06 07:08|01 02 03 04 05 06 07:08|01 02 03 04 05 06 07:08");
//  for (int i = 0; i < list.size(); i++) {
//   String str = list.get(i).toString();
//   System.out.println(str);
//
//  }
  
  System.out.println(CountNum5.getPLNumber(3, 4));
 }