不用编程,能直接计算正确么?
有这样一道题:一个五位数,它每一位上出现的数字都至少是两个,问一共有多少个这样的五位数。比如11222、21212就是满足条件的,而34435就是不满足条件的。不用计算机编程,直接用排列组合来计算,看看你算出的结果是多少。
我的答案(鼠标选择):
1、全部为同样的数字,C(9,1)=9,一共9种。
2、由两种数字组成,必然为A数字3个,B数字2个,或者A数字2个,B数字3个。
C(10,2)*2*P(5,5)/P(3,3)/P(2,2)=900。
解释一下,C(10,2)=45代表从10个数字中选出两个数字的组合数,*2代表两种情况(A为三个或者B为三个),其实可以直接写成P(10,2),代表从10个数字中选出两个进行排列的数量,其中排在前面的为出现3次,后面的出现2次。
P(5,5)=120代表五个数字进行全排列的数量。
P(3,3)=6,P(2,2)=2。因为我们用5个数字进行全排列,其中三个数字相同,它们的排列是完全可以互换的,所以去掉重复的6个,剩下两个数字也是相同的,所以也要去掉重复的,所以在前面的结果基础上除以6和2。
3、但是我们还要考虑一个问题,因为说的是5位数,也就是万位是不能为0的,而我们前面是把0放在0位也算的,所以要去掉0开头的情况。上面我们已经计算出来了全部的组合为900,而这个结果是将0与其它数字完全平等对待的,那么0在首位的比例必然为1/10,所以900/10=90。
所以,最后的结果为9+900-90=819。
上面是答案。
posted on 2012-05-19 10:28 java课程设计例子 阅读(127) 评论(0) 编辑 收藏 举报