因为0和10000中都不含数字8,所以,这个问题可以看作是:0000到9999中含有8的数有多少个?
不含8的位置上,只能是012345679这9个数字,即每个位置上有9种选择。按照含8的个数,进行分类讨论:
含一个8的,其它三位的方案数是9*9*9=729,插入8的方案数是4选1,即C(4,1)=4;叠加计算,729*4=2916个。
含两个8的,其它两位的方案数是9*9=81,合并插入两个8的方案数是C(3,1)=3,分开插入两个8的方案数是C(3,2)=3;叠加计算,81*3+81*3=486个。
含三个8的,其它一位的方案数是9,合并插入三个8的方案数是C(2,1)=2,插入88和8的方案数是C(2,1)=2;叠加计算,9*2+9*2=36。
含四个8的,方案数就1个。
上述合计,一共是 2916+486+36+1 = 3439个。
~~~~~~~~~~~~~~~~~~~~
用编程方法进行验证,结果完全正确。附fortran代码和计算结果: