中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-29 20:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [出题]计算1到999999999中包含数字1的个数 查看 2,192 回复 16
楼 主 [出题]计算1到999999999中包含数字1的个数 发表于 2008-11-12 22:28 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
当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 ]
2 发表于 2008-11-12 22:33 ·  中国 台湾 中华电信(HiNet)数据中心
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
n=15的時候好像1的個數值8個啊
是不是我理解錯了
3 发表于 2008-11-12 23:45 ·  中国 广东 东莞 电信
初级用户
积分 98
发帖 45
注册 2008-08-30 01:29
17年会员
UID 124535
性别 男
状态 离线
希望版主多出几次题.最好出一些低级点的 注明:新手进.
这些都太深奥了
4 Re 2楼 发表于 2008-11-12 23:52 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
是我粗心了,已在顶楼更正。
5 发表于 2008-11-13 11:04 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
这个需要考虑算法多一些,如果纯粹的遍历的话,估计程序得跑上一段时间了。
6 发表于 2008-11-14 12:00 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
@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
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
HAT +8 2008-11-14 13:57
moniuming +7 2008-11-21 23:56
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
7 发表于 2008-11-14 12:02 ·  中国 北京 联通(数字北京大厦IDC机房)
新手上路
积分 11
发帖 6
注册 2008-07-31 11:56
17年会员
UID 122472
性别 男
状态 离线
过来学习了
8 发表于 2008-11-14 14:10 ·  中国 广西 桂林 永福县 电信
初级用户
积分 26
发帖 14
注册 2008-07-06 22:26
17年会员
UID 121182
状态 离线
9 发表于 2008-11-15 07:06 ·  中国 广东 广州 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
这个公式是
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
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
moniuming +7 2008-11-22 00:05
49206C6F766520796F752067757973 54656C3A3133383238343036373837
10 发表于 2008-11-21 23:22 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@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
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
moniuming +7 2008-11-22 00:06
11 发表于 2008-12-19 10:53 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
这可以当概率题来做啊,比如是两位数以内吧,小于10的 就当作是01 02 03 ....
这样就固定为两位数了,
第一位是1 的情况有多少个?
第二位 从 0 - 9 共 10 个

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

一共是20个

3位数以内的,假定其中一位是1 其余两位数的组合情况从 00-99 共100个
分三位,所以有300个
......
12 发表于 2008-12-19 11:39 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
19年会员
UID 59307
状态 离线
序号:123456789
轮盘:000000000(可从 0 拨到 9)

数字全部拨完出现多少个 1?
[1*10^(9-1)]*9
每个位置出现1的个数为 10^8,共 9 个拨码。
┌───────┐
├→学习→实践→┤
└───────┘
13 发表于 2008-12-26 19:27 ·  中国 广西 南宁 西乡塘区 电信
初级用户
积分 23
发帖 17
注册 2008-08-22 21:53
17年会员
UID 123905
性别 男
状态 离线
对于我太难了。这个
14 发表于 2008-12-26 23:49 ·  中国 广东 广州 白云区 电信
初级用户
积分 70
发帖 38
注册 2007-05-23 07:20
19年会员
UID 89024
性别 男
状态 离线
在CSDN看见有人写过这样的算法.
运行效率也很高.
15 发表于 2009-01-02 23:48 ·  法国
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
19年会员
UID 74627
性别 男
状态 离线
一共9位 每一位上1 的出现次数为 1次 对于整位数的可以进行排列组合计算
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
论坛跳转: