求一个数字中1的个数
輸入一個整數n,求從1到n這n個整數的十進制表示中1出現的次數。
如18出現了1 10 11 12 13 14 15 16 17 18 總計10次?
?例如一個5位數x=48292
?萬位數? 10000-19999共有10000個
?千位數? 5*(1000)此時萬位數的取值可以是0 1 2 3 4 共5個所以有5種
?百位數? 00100-48292 共有100*49
? 十位數 00010-48292 共有482*10
?個位數4830*1
總計10000+5000+4900+4820+4830
規律
c >1:?00?1?00 -- ab?1?99,共計 (ab+1)*100種,其中(ab+1)表示萬千位可以取00-ab,共計ab+1種。因為c>1所以 ab199<abcde,所以這些數都是在1 -- abcde范圍內。
?
c=0:??00?1?00 -- a (b-1)?1?99, 總共有ab*100種,而a(b-1)200-ab099之間,都沒有百位=1的數字出現了。
?
c=1:??我們可以把c = 1的數字分成以下2種情況之和
?
? ? ? ? ? ? ?00?1?00 -- a(b-1)1?99 :總共ab * 100種可能性;
?
a(b-1)?2?00 -- ab 0 99:這段數字中百位=1的的數字數目為0;
?
? ? ? ? ? ? ? ab 1 00 -- ab 1 cd:共計cd+1種可能性;
?
所以c =1的數字數目,等于c=0的數字數目,加上abcde%100 +1。
?
轉載于:https://www.cnblogs.com/masimian/p/4552829.html
總結
以上是生活随笔為你收集整理的求一个数字中1的个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: npm国内镜像介绍
- 下一篇: MVC3学习 八 Action和resu