呵呵这更像是个数列组合问题.其实可以反过来说就是有多少个数字不含1.200亿=20000000000那么不含一的数字量为n=2*9*9.=2*9(10次方)这个编程好写吧?呵呵.那么含1的数字就是200亿-n.你可以把200亿看成个数字...
你的答案是这个数吗?19*8+40*20000000=800000152
。。。。。。你好像还是不明白啊。这个题解的精髓是看懂这个数列组合。。。答案应该是=20000000000-2*9*9*9*9*9*9*9*9*9*9=13026431198你可以把200亿看成个数字串ABCDEFGH...那么首位不是1的话可以为(0或者2,共2种变化)次位(可以为0,2,3,4,5,6,7,8,9,共9种变化),第三位可以为(0,2,3,4,5,6,7,8,9,共9种变化)。。。。。。依次类推。。。那么除了首位是有2个可能后面的位上都是有肯能有9种变化。那么总共就有2*9(9的10次方)个数不含1用200亿减去就得到了
是不太明白,现在开始明白你的算法了,但我对你这个数字有疑问,200亿个数字里面居然有130亿多个带1的数字。一到100也不过只有20个,从200开始一直到900,没一百当中只有19个带1的数字。怎么算也不应该有这么多啊?
呵呵不需要疑问。算法正确就对了我告诉你为什么有130亿多、因为当首位为1的时候后面不论是什么都是含1的所以当首位为1的时候就有了100亿个了。唉,我挺耐心的吧。呵呵。多给点分吧
分给你无所谓,我就是想讨论下。1到100只有20个带1的数字,而从200开始一直到900,每一百只有19个带1的数字,1000又是20个。就是说1千里面有8个192个20,就是192个。1000*2千万就是2亿,1000当中有192个,192*200万应该就是正确数字。可能是我逻辑错误了,你说的不错啊,凡是第一位带1的数字都算。
我真服了你了。。建议你好好看我给你说的解释。你的思路是片面的。好好看我下面的文字。如果看不懂和同学一起看下,当你理解后你就会豁然开朗了。你可以把200亿看成个数字串ABCDEFGH...那么首位不是1的话可以为(0或者2,共2种变化)次位(可以为0,2,3,4,5,6,7,8,9,共9种变化),第三位可以为(0,2,3,4,5,6,7,8,9,共9种变化)。。。。。。依次类推。。。那么除了首位是有2个可能后面的位上都是有肯能有9种变化。那么总共就有2*9(9的10次方)个数不含1用200亿减去就得到了关于你的问题。你思考的太片面是从小算大的。也是错误的。你1-1000的算法是正确的但是1000*2千万的算法完全是错误的。反问你,1-100有20个含1的数字,那么1000=100*10是不是应该有10*20个含1的数字啊?