zoukankan      html  css  js  c++  java
  • HDOJ1261 字串数[组合+大数]

    字串数

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 1877    Accepted Submission(s): 367


    Problem Description
    一个A和两个B一共可以组成三种字符串:"ABB","BAB","BBA".
    给定若干字母和它们相应的个数,计算一共可以组成多少个不同的字符串.
     
    Input
    每组测试数据分两行,第一行为n(1<=n<=26),表示不同字母的个数,第二行为n个数A1,A2,...,An(1<=Ai<=12),表示每种字母的个数.测试数据以n=0为结束.
     
    Output
    对于每一组测试数据,输出一个m,表示一共有多少种字符串.
     
    Sample Input
    2 1 2 3 2 2 2 0
     
    Sample Output
    3 90
     
    Source
     
    Recommend
    JGShining
     
     
     
     
     
     
     
     
    code:
     1 /*
     2 设多重集的个数n = n1 + n2 + ... + nk;
     3 则该多重集的排列个数为:n!/(n1!n2!...nk!).
     4 */
     5 import java.util.*;
     6 import java.math.*;
     7 public class Main
     8 {
     9     public static void main(String []args)
    10     {
    11         Scanner cin=new Scanner(System.in);
    12         int n;
    13         int sum;
    14         int []data=new int[27];
    15         BigInteger a,b;
    16         while(cin.hasNext())
    17         {
    18             n=cin.nextInt();
    19             if(n==0)
    20                 break;
    21             sum=0;            
    22             for(int i=0;i<n;i++)
    23             {
    24                data[i]=cin.nextInt();
    25                sum+=data[i];
    26             }
    27             a=BigInteger.valueOf(1);
    28             for(int i=2;i<=sum;i++)
    29                 a=a.multiply(BigInteger.valueOf(i));
    30             for(int i=0;i<n;i++)
    31             {
    32                 b=BigInteger.valueOf(1);
    33                 for(int j=2;j<=data[i];j++)
    34                     b=b.multiply(BigInteger.valueOf(j));
    35                 a=a.divide(b);
    36             }
    37             System.out.println(a);
    38         }
    39     }
    40 }
  • 相关阅读:
    oracle 体系结构
    Oracle存储过程语法
    oracle 触发器
    oracle 存储过程
    oracle 高水位线详解
    oracle索引总结
    Oracle的表空间、数据文件、用户
    Oracle实例和数据库区别
    [whu1564]后缀数组
    [hdu4552]最长公共前缀
  • 原文地址:https://www.cnblogs.com/XBWer/p/2645180.html
Copyright © 2011-2022 走看看