中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-28 04:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何求出文本中哪些数相加等于指定的值 查看 3,748 回复 48
16 发表于 2007-03-03 06:50 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
同志,好像这72个数中有8个数是重复的:

4730
5134
4828
4724
4720
4742
4760
4754

是不是只要考虑其它的64个数?!
17 发表于 2007-03-03 06:54 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
不是这样的,例如:4078+4078+4078+4052+4650=20936
如果test.txt中有3个4078的话,允许上式出现。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
18 发表于 2007-03-03 07:01 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
这样就更加加大了难度!

如果只考虑64个不重复的数的话,根据推算,至少需要35个数,至多37个数
19 发表于 2007-03-03 07:05 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
这是实际应用中的必然情况,也就是说,如果代码不运算重复数的话,只是练一练大家的手,而非解决我的难题了,请谅解。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
20 发表于 2007-03-03 07:16 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
其实,将组合数字的数目排除在了35个到37个之间,如果按照常规的办法的话,组合的可能情况仍然是个极其庞大的数字。
21 发表于 2007-03-03 07:18 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
好像很耗时间,嘻嘻,没测试


SETLOCAL ENABLEDELAYEDEXPANSION
for /f %%i in (data.txt) do (
set /a a1+=1
set _data!a1!=%%i)

for /l %%a in (1,3,%a1%) do (
set /a b=%%a+1
for /l %%b in (!b!,1,!b!) do (
set /a c=!b!+1
for /l %%c in (!c!,1,!c!) do (
set /a d=!c!+1
for /l %%d in (!d!,1,%a1%) do (
set /a z="1/(171780-!_data%%a!-!_data%%b!-!_data%%c!-!_data%%d!)"||echo !_data%%a!+!_data%%b!+!_data%%c!+!_data%%d!^=171780&&set /a _data%%a=0,_data%%b=0,_data%%c=0,_data%%d=0)
)
)
)

set
pause


[ Last edited by everest79 on 2007-3-2 at 06:33 PM ]
22 发表于 2007-03-03 07:39 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
晕,原来是四位数,我看成五位数了
23 发表于 2007-03-03 08:15 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
写不下去,太多
24 发表于 2007-03-03 09:20 ·  中国 甘肃 兰州 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
这么难的题目终于发出来了哦~我是想不出了,期待高手
25 发表于 2007-03-03 11:03 ·  中国 浙江 绍兴 电信
高级用户
★★★
Autowalk
积分 845
发帖 375
注册 2007-03-03 01:58
19年会员
UID 80606
性别 男
状态 离线
光是一道数学题目就可以杀死大片脑细胞了,更别说设计出一 套算法来-_-!
26 发表于 2007-03-03 21:18 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
排序后:

3800
3858
4072
4162
4168
4188
4238
4240
4262
4270
4272
4322
4324
4498
4520
4616
4632
4682
4684
4704
4710
4712
4720
4720
4724
4724
4730
4730
4732
4742
4742
4744
4746
4754
4754
4760
4760
4762
4770
4776
4782
4784
4792
4808
4816
4824
4826
4828
4828
4830
4838
4896
4942
4948
5008
5076
5104
5130
5134
5134
5150
5164
5168
5174
5194
5206
5218
5224
5234
5266
5282
5348



最大的38位数之和
5348+5282+5266+5234+5224+5218+5206+5194+5174+5168+5164+5150+5134+5134+5130+5104+5076+5008+4948+4942+4896+4838+4830+4828+4828+4826+4824+4816+4808+4792+4784+4782+4776+4770+4762=175264

最小的39位数之和
3800+3858+4072+4162+4168+4188+4238+4240+4262+4270+4272+4322+4324+4498+4520+4616+4632+4682+4684+4704+4710+4712+4720+4720+4724+4724+4730+4730+4732+4742+4742+4744+4746+4754+4754+4760+4760+4762+4770=176548>171780
那么说明什么?只能是38位才可以。(随便算了下最小的38个加起来是171778)


这样位数就限定了!从2的72次方-1次运算减少到396561735952215036840次,约是344*2的60次方。。。虽然很大但是你要知道。。2的72次方是它的12!(≈11.9)的倍!
而且可以进一步减少次数。。。。
27 发表于 2007-03-03 21:28 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
最小的38个数之和 和需要的数字差2 (171780-171778=2)

3800+3858+4072+4162+4168+4188+4238+4240+4262+4270+4272+4322+4324+4498+4520+4616+4632+4682+4684+4704+4710+4712+4720+4720+4724+4724+4730+4730+4732+4742+4742+4744+4746+4754+4754+4760+4760+4762

而第39个数字是4770,和他最接近的数是第38个(我按顺序排的)。而这个数字4762
和4770的差大于2。

也就是说如果把39替换了38那么数字变大了6(171786)。
而这个数字是38个数字第2小的数。以后的数字都大于它!
所以最终的答案出来了!!!!!


无符合要求组合
28 发表于 2007-03-03 21:49 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
re slore
不会如兄所说没有符合要求组合,因为我是经过一番挑选后求得这一结果,然后出的题目。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
29 发表于 2007-03-03 21:53 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
Originally posted by ccwan at 2007-3-3 08:49:
re slore
不会如兄所说没有符合要求组合,因为我是经过一番挑选后求得这一结果,然后出的题目。


那你的数字是38个么?

你发短消息给我你的那个数字吧。
我觉得分析的没有错误啊。。。不会是计算上的吧~
30 发表于 2007-03-03 21:59 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
抱歉,我是随意选中一些数,得出一个结果后就发出来的,没有记录是哪些数,但可以肯定是存在这种组合的。

若因为我的疏忽造成真的没有,兄可以自己定义一个值,只要可以完成就行。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
论坛跳转: