Board logo

标题: [出题]计算1到999999999中包含数字1的个数 [打印本页]

作者: HAT     时间: 2008-11-12 22:28    标题: [出题]计算1到999999999中包含数字1的个数

当n=1时,{1},包含数字1的个数为1;
当n=5时,{1,2,3,4,5},包含数字1的个数为1;
当n=10时,{1,2,3,4,5,6,7,8,9,10},包含数字1的个数为2;
当n=15时,{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},包含数字1的个数为8;
当n=999999999时,{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,...,999999999},包含数字1的个数为多少呢?

[ Last edited by HAT on 2008-11-12 at 23:52 ]
作者: huahua0919     时间: 2008-11-12 22:33
n=15的時候好像1的個數值8個啊
是不是我理解錯了
作者: 406317577     时间: 2008-11-12 23:45
希望版主多出几次题.最好出一些低级点的 注明:新手进.
这些都太深奥了
作者: HAT     时间: 2008-11-12 23:52    标题: Re 2楼

是我粗心了,已在顶楼更正。
作者: lxmxn     时间: 2008-11-13 11:04
这个需要考虑算法多一些,如果纯粹的遍历的话,估计程序得跑上一段时间了。
作者: slore     时间: 2008-11-14 12:00
@echo off
set n=9
(set /p =当n^=) <nul
for /l %%i in (1,1,%n%) do (set /p =9) <nul
(set /p =时,包含数字1的个数为:) <nul
echo.
(set /p =%n%) <nul
for /l %%i in (2,1,%n%) do (set /p =0) <nul
echo.
pause
作者: rexly     时间: 2008-11-14 12:02
过来学习了
作者: Saber     时间: 2008-11-14 14:10
http://topic.csdn.net/u/20081102 ... b-d848816456f6.html

……
作者: everest79     时间: 2008-11-15 07:06
这个公式是
0—n位数序列中包含1的个数=10^(n-1)*n
1:        1*1                                                                                                =         1
2:       10*1+       1*10                                                                                    =        20
3:      100*1+      10*10+      1*100                                                                        =       300
4:     1000*1+     100*10+     10*100+     1*1000                                                            =      4000
5:    10000*1+    1000*10+    100*100+    10*1000+    1*10000                                                =     50000
6:   100000*1+   10000*10+   1000*100+   100*1000+   10*10000+   1*100000                                    =    600000
7:  1000000*1+  100000*10+  10000*100+  1000*1000+  100*10000+  10*100000+  1*1000000                        =   7000000
8: 10000000*1+ 1000000*10+ 100000*100+ 10000*1000+ 1000*10000+ 100*100000+ 10*1000000+ 1*10000000            =  80000000
9:100000000*1+10000000*10+1000000*100+100000*1000+10000*10000+1000*100000+100*1000000+10*10000000+1*100000000= 900000000

作者: HAT     时间: 2008-11-21 23:22

@echo off
set num=999999999
set result=1
for /f "skip=1 delims=:" %%a in ('^(echo "%num%"^&echo.^)^|findstr /o ".*"') do (
  set /a len=%%a-5
)
echo %len%
set /a len_1=len-1
for /l %%a in (1,1,%len_1%) do (
  set /a result*=10
)
set /a result*=len
echo %result%
pause

作者: 523066680     时间: 2008-12-19 10:53
这可以当概率题来做啊,比如是两位数以内吧,小于10的 就当作是01 02 03 ....
这样就固定为两位数了,
    第一位是1 的情况有多少个?
        第二位 从 0 - 9      共 10 个

    第二位是1 的情况有多少个?
        第一位 从 0 - 9      共 10 个

一共是20个

3位数以内的,假定其中一位是1  其余两位数的组合情况从 00-99 共100个
            分三位,所以有300个
......
作者: wxcute     时间: 2008-12-19 11:39
序号:123456789
轮盘:000000000(可从 0 拨到 9)

数字全部拨完出现多少个 1?
[1*10^(9-1)]*9
每个位置出现1的个数为 10^8,共 9 个拨码。
作者: kurt101     时间: 2008-12-26 19:27
对于我太难了。这个
作者: Li103Z     时间: 2008-12-26 23:49
在CSDN看见有人写过这样的算法.
运行效率也很高.
作者: PPdos     时间: 2009-1-2 23:48
一共9位 每一位上1 的出现次数为 1次 对于整位数的可以进行排列组合计算
作者: PPdos     时间: 2009-1-2 23:49
哦~11 楼有说阿。。
作者: netbenton     时间: 2009-1-3 02:44
高,
顶一下
要是算1到一个随机数包含的1的个数呢

[ Last edited by netbenton on 2009-1-3 at 02:51 ]