• 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".
    给定若干字母和它们对应的个数,计算一共能够组成多少个不同的字符串.
     

    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
     



    import java.util.*;
    import java.math.*;
    
    public class Main
    {
    	public static void main(String[] args)
    	{
    		Scanner in=new Scanner(System.in);
    		BigInteger[] jie=new BigInteger[20];
    		jie[0]=BigInteger.ONE;
    		BigInteger nt=BigInteger.ONE;
    		for(int j=1;j<=14;j++)
    		{
    			jie[j]=jie[j-1].multiply(nt); 
    			nt=nt.add(BigInteger.ONE);
    		}
    		while(in.hasNext())
    		{
    			int n=in.nextInt();
    			if(n==0) break;
    			BigInteger[] a=new BigInteger[n];
    			int[] av=new int[n];
    			BigInteger sum=BigInteger.ZERO;
    			for(int i=0;i<n;i++)
    			{
    				av[i]=in.nextInt();
    				a[i]=BigInteger.valueOf(av[i]);
    				sum=sum.add(a[i]);
    			}
    			BigInteger ans=BigInteger.ONE;
    			for(BigInteger i=BigInteger.ONE;i.compareTo(sum)<=0;i=i.add(BigInteger.ONE))
    			{
    				ans=ans.multiply(i);
    			}
    			for(int i=0;i<n;i++)
    			{
    				ans=ans.divide(jie[av[i]]);
    			}
    			System.out.println(ans);
    		}
    	}
    }



  • 相关阅读:
    EF--CodeFirst
    一个很吊的文章---框架
    EF的代码优先设计
    MVC3--View层
    asp.net返回值当文件下载问题
    MVC源码
    编译原理
    TPatch动态补丁系统(iOS)
    浅析分布式系统
    如何在腾讯云快速构建一个Wordpress个人站点
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7294179.html
Copyright © 2020-2023  润新知