资讯详情

hdu1261 JAVA

题意:

一个A和两个B可以形成三个字符串:"ABB","BAB","BBA".给定几个字母和它们对应的数字,计算总共可以形成多少个不同的字符串.

思路:

刚开始看这个话题感觉指数母函数,结果直接敲水,然后水wa了,哎,SB后来这个题目的答案肯定是几百个,然后自己写啊写啊写,各种各样的wa,后来放弃了,干脆去学习了JAVA大数,以前没用过,输入输出,转换格式,class刺了一个晚上,终于a了,费力啊,

事实上,这个话题不需要使用母函数,母函数计算复杂(自己JAVA什么都不会,刚学的结合到母函数里就觉得复杂) , 事实上,我们可以用组合数学的思想来做 ,想想N个不同的数字,它们可以组合的数字是 N!,但是样的数字可能出现在这个问题上,所以答案肯定相对较少,

假设这些数字是不同的 N!(n 不是标题中的n,而是所有数字的总数 sum),然后考虑同样的情况, 假如有AAA,一开始我们把它们当成三个不同的数字,所以只要除以这三个数字的组合数(1 * 2 * 3)可以恢复,一切都这样处理,答案是:

sum : 所有数字个数和

c[i] : i 有多少个

ans = sum! / (c[1]! * c[2]! * ...*c[n]!);

下面是你自己的 WA的母函数 和 Ac的组合数(Ac这个代码是在网上找到的。一开始,我自己JAVA什么都不会 ,明天再写一遍JAVA 常用的东西)

#include<stdio.h>  c30c1261210c2261210 jcs15 DB_JC    jcs0 1 i 1i 13i    jcsi jcsi1 i ijknmscanf"%d"n n       m 0i 1i ni          scanf"%lf"ci          mcii 0i mi       c1i c2i 0       DB_JC       c10 1.0 jcs0i 1i nij 0j mjk 0k j m k cik          c2kj c1jjcskj 0j mj          c1j c2jc2j 0        printf"%I64d\n"c1m jcsm 0            

组合数学 Ac JAVA 代码

 javautil javamath Main main args cinin f1 f2s26 n sum         n cinnextIntn 0             sum 0 i0 ini                 si cinnextInt                 sum si             f1"1" i1 isumi
                f1 f1multiplyvalueOfi
            f2"1" i0 ini j1 jsij
                    f2 f2multiplyvalueOfjoutprintln""f1dividef2
            n cinnextInt

标签: jcs油压继电器参数

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台