HDU - 1261-字串数 (排列组合+大数)

一个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代码:
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

public class Main
{
       public static void main(String[] args) {
       Scanner sc=new Scanner(System.in);
       while(true)
       {
          int n;
          n=sc.nextInt();
          if(n==0)
          {
              break;
          }
          int sum=0;
          BigInteger ans=new BigInteger("1");
          BigInteger ans1=new BigInteger("1");

          int x;
          for(int t=1;t<=n;t++)
          {
             x=sc.nextInt();
             sum+=x;
             for(int j=1;j<=x;j++)
             {
                 ans=ans.multiply(BigInteger.valueOf(j));
             }
          }
          for(int t=1;t<=sum;t++)
          {
              ans1=ans1.multiply(BigInteger.valueOf(t));
          }
          ans1=ans1.divide(ans);
          System.out.println(ans1);

       }
        sc.close();
    }

}

原文地址:https://www.cnblogs.com/Staceyacm/p/11254257.html

时间: 2024-08-29 04:38:54

HDU - 1261-字串数 (排列组合+大数)的相关文章

hdu 1261 字串数 排列组合

字串数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3505    Accepted Submission(s): 855 Problem Description 一个A和两个B一共可以组成三种字符串:"ABB","BAB","BBA". 给定若干字母和它们相应的个数,计算一共可以组

HDU 1261 字串数

字串数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3187    Accepted Submission(s): 757 Problem Description 一个A和两个B一共可以组成三种字符串:"ABB","BAB","BBA".给定若干字母和它们相应的个数,计算一共可以组成多

Hdu 1261字串数

字串数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4683    Accepted Submission(s): 1234 Problem Description 一个A和两个B一共可以组成三种字符串:"ABB","BAB","BBA".给定若干字母和它们相应的个数,计算一共可以组成

组合数学 + 大数乘法 + 大数除法 之 hdu 1261 字串数

//  [3/17/2015 JmingS] /* 此题可直接推导出公式: {(A1+A2+……+An)!} / {A1!A2!……An!} 由于 (12×26)! = 312! 只能通过数组来存储,所以又涉及『大数乘法』和『大数除法』, 大数实现的主要思想模拟手算,具体参考程序. */ 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5

HDOJ 1261 字串数

JAVA大数.... 字串数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2893    Accepted Submission(s): 679 Problem Description 一个A和两个B一共可以组成三种字符串:"ABB","BAB","BBA". 给定若干字母和它们相应

字串数 排练组合(阶乘) java秒

字串数 题目抽象:给定若干字母和它们相应的个数,计算一共可以组成多少个不同的字符串. 1 import java.math.*; 2 import java.util.*; 3 import java.io.*; 4 import java.text.*; 5 6 public class Main 7 { 8 9 public static void main(String[] args) 10 { 11 Scanner cin=new Scanner(new BufferedInputStr

Problem1261 字串数

字串数 http://acm.hdu.edu.cn/showproblem.php?pid=1261 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5281    Accepted Submission(s): 1398 Problem Description 一个A和两个B一共可以组成三种字符串:"ABB","BA

hdu 4465 Candy (快速排列组合 )

Candy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2115    Accepted Submission(s): 910 Special Judge Problem Description LazyChild is a lazy child who likes candy very much. Despite being ve

hdu 1261 排列组合&amp;&amp;大数除法

唉  不知道第一次发什么神经 第一次把t定义成char 型的了 小数还对 大数就不多了...找了半个小时才找到  以后要细心了 求大数 一定是用字符串保存,,long long 肯定溢出. 具体思路就是把所有字符个数加起来的阶乘n!除以各个字符出现的个数的阶乘. #include <stdio.h> #include <string.h> #define num 1000 int main() { char str[num]; long long n,x,count,j,i,q,s