标题: [出题]计算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 ]