中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 12:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用穷举法解一道奥数题? 查看 933 回复 9
楼 主 用穷举法解一道奥数题? 发表于 2008-11-17 17:35 ·  中国 广东 广州 番禺区 电信
初级用户
★★
积分 156
发帖 73
注册 2008-05-09 10:40
18年会员
UID 118210
性别 男
状态 离线
题目是这样的:有一个四位数,第一位数是这个数中数字0的个数,第二位数是这个数中数字1的个数,第三位数是这个数中数字2的个数,第四位数是这个数中数字3的个数,求这个数。
为自己是中国人而倍感骄傲
2 发表于 2008-11-17 19:28 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
- - ||| 居然没看懂什么意思。。。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
3 发表于 2008-11-17 19:47 ·  中国 福建 福州 连江县 电信
中级用户
★★
积分 356
发帖 115
注册 2004-07-27 00:00
22年会员
UID 29114
性别 男
状态 离线
1210
4 发表于 2008-11-17 20:14 ·  中国 重庆 沙坪坝区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
奥数题就不该用穷举法吧,否则会被奥数老师狠批的:)
5 发表于 2008-11-17 20:30 ·  中国 福建 福州 连江县 电信
中级用户
★★
积分 356
发帖 115
注册 2004-07-27 00:00
22年会员
UID 29114
性别 男
状态 离线
“第一位数是这个数中数字0的个数”,所以第一位数肯定不为0,否则矛盾。
6 发表于 2008-11-17 21:06 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
不知个位是第一位,还是千位是第一位。
Windows 一键还原
http://www.yjhy.com
7 发表于 2008-11-18 00:14 ·  中国 广东 广州 番禺区 电信
初级用户
★★
积分 156
发帖 73
注册 2008-05-09 10:40
18年会员
UID 118210
性别 男
状态 离线
3楼正解,但好像不是用P算出来的。
第一个数字不能为0,否则就是三位数了。
还有,如果题目中的第一位是指从左边算起的话。如果是从右边数起第一位的话,又不知道是什么答案,还是希望可以用P
为自己是中国人而倍感骄傲
8 发表于 2008-11-18 08:49 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
如果是从右边数起第一位的话,是0.003
Windows 一键还原
http://www.yjhy.com
9 发表于 2008-11-18 15:19 ·  中国 福建 福州 连江县 电信
中级用户
★★
积分 356
发帖 115
注册 2004-07-27 00:00
22年会员
UID 29114
性别 男
状态 离线
第一位是指从左边算起,答案:1210 2020
如果是从右边数起第一位,0202 0121。如果第一个数字不能为0,否则就是三位数,就无解。
以下是第一位从左边算起
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%a in (0,1,3) do (
for /l %%b in (0,1,3) do (
for /l %%c in (0,1,3) do (
for /l %%d in (0,1,3) do (
set n=0
for /l %%e in (0,1,3) do (
set m%%e=0
if %%a==%%e set /a m%%e+=1
if %%b==%%e set /a m%%e+=1
if %%c==%%e set /a m%%e+=1
if %%d==%%e set /a m%%e+=1
)
if !m0!==%%a set /a n+=1
if !m1!==%%b set /a n+=1
if !m2!==%%c set /a n+=1
if !m3!==%%d set /a n+=1
if !n!==4 echo %%a%%b%%c%%d
))))
ENDLOCAL
pause
10 Re 10楼 发表于 2008-11-18 15:56 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
最外层的 for 应该从0开始吧?
论坛跳转: