HDU - 1261-字串数 (排列组合+大数)
Posted staceyacm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
以上是关于HDU - 1261-字串数 (排列组合+大数)的主要内容,如果未能解决你的问题,请参考以下文章