有一个四位的身份识别码(PIN),它由0−9的数字构成,允许存在前导0,现在给出一个长度为10的字符串s0s1s2...s9,表示每一种数字是否在身份识别码中出现,具体如下:
请你找出满足上述条件的PIN的数量。
一行一个长度为10的字符串S,仅含有字符" o,x,? "。
一行一个数,表示满足条件的PIN的数量。
ooo???xxxx
108
o?oo?oxoxo
0
样例1:0123和0021是满足条件的2种,一共108种,因为根据样例知道肯定有0,1,2,肯定没有6,7,8,9,3,4,5可有可无,则分类讨论:
? 1、有一个3或4或5时,方案数为C(3,1)∗A(4,4),即先从4,5,6这三个数中选一个数,设为x,然后0,1,2,x这四个数做全排列,分步相乘。
? 2、没有3,4,5时,有两个0时方案数为A(3,3)∗3,即0,1,2先做全排列,然后0有3个位置可插入,同理可得有两个1或2时的方案数为A(3,3)∗2 和? A(3,3)∗1,注意此时会和前面有重复了,所以插入位置数依次减少1个。
综上得方案数为C(3,1)∗A(4,4)+A(3,3)∗3+A(3,3)∗2+A(3,3)=24∗3+18+12+6=108。