HDOJ 1261
来源:互联网 发布:北京java学费 编辑:程序博客网 时间:2024/06/16 07:41
字串数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2555 Accepted Submission(s): 576
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
21 232 2 20
Sample Output
390
Source
浙江工业大学第四届大学生程序设计竞赛
Recommend
JGShining
组合数学公式加上高精度
import java.io.*;import java.util.*;import java.math.*;/** * * @author XM_zhou *///设多重集的个数n = n1 + n2 + ... + nk;//则该多重集的排列个数为:n!/(n1!n2!...nk!).public class Main{ public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n; BigInteger a , b; int sum; int tire[] = new int [26]; while(cin.hasNext()) { n = cin.nextInt(); if(n == 0)break; a = BigInteger.ONE; sum = 0; for(int i = 0 ; i < n ; i++) { tire[i] = cin.nextInt(); sum += tire[i]; } for(int i = 2 ; i <= sum ; i++) { a = a.multiply(BigInteger.valueOf(i)); } for(int i = 0 ; i < n ; i++) { b = BigInteger.ONE; for(int j = 2 ; j <= tire[i] ; j++) { b = b.multiply(BigInteger.valueOf(j)); } a = a.divide(b); } System.out.println(a); } }}
- HDOJ 1261
- HDOJ 1261 字串数
- HDOJ
- hdoj
- hdoj
- HDOJ
- hdoj 1568 && hdoj 5344 && hdoj 5444
- HDOJ 2176
- Hdoj--1272
- hdoj 1003
- hdoj 1005
- hdoj 1030
- hdoj 2154
- hdoj 2100
- HDOJ 1106
- hdoj 1257
- hdoj 1159
- hdoj 1160
- Android开发笔记之《Activity学习》
- url参数和map之间的转换
- 新手必看初学51单片机几个不易掌握的概念
- 匈牙利命名法
- Google Maps Android API V2使用及问题解决
- HDOJ 1261
- ORA-38500: USING CURRENT LOGFILE option not available without stand
- 基于jQuery的弹出框(背景同时灰掉)【原创】
- 把数组排成最小的数
- android adb问题整理解决:The connection to adb is down和ADB server didn't ACK * failed to start daemon
- flex中调用webservice的两种方法
- 第十二章 Java IO
- poj1251(prim)
- Delphi程序自删除的几种方法