中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何求出文本中哪些数相加等于指定的值
« [1] [2] [3] [4] »
作者:
标题: [求助]如何求出文本中哪些数相加等于指定的值 上一主题 | 下一主题
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 16 楼』:  

同志,好像这72个数中有8个数是重复的:
4730
5134
4828
4724
4720
4742
4760
4754
是不是只要考虑其它的64个数?!

2007-3-3 06:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 17 楼』:  

不是这样的,例如:4078+4078+4078+4052+4650=20936
如果test.txt中有3个4078的话,允许上式出现。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-3-3 06:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 18 楼』:  

这样就更加加大了难度!

如果只考虑64个不重复的数的话,根据推算,至少需要35个数,至多37个数

2007-3-3 07:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 19 楼』:  

这是实际应用中的必然情况,也就是说,如果代码不运算重复数的话,只是练一练大家的手,而非解决我的难题了,请谅解。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-3-3 07:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 20 楼』:  

其实,将组合数字的数目排除在了35个到37个之间,如果按照常规的办法的话,组合的可能情况仍然是个极其庞大的数字。

2007-3-3 07:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 21 楼』:  

好像很耗时间,嘻嘻,没测试
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 ]

2007-3-3 07:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 22 楼』:  

晕,原来是四位数,我看成五位数了

2007-3-3 07:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 23 楼』:  

写不下去,太多

2007-3-3 08:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 24 楼』:  

这么难的题目终于发出来了哦~我是想不出了,期待高手

2007-3-3 09:20
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 25 楼』:  

光是一道数学题目就可以杀死大片脑细胞了,更别说设计出一 套算法来-_-!

2007-3-3 11:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 26 楼』:  

排序后:
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)的倍!
而且可以进一步减少次数。。。。

2007-3-3 21:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 27 楼』:  

最小的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小的数。以后的数字都大于它!
所以最终的答案出来了!!!!!
无符合要求组合


2007-3-3 21:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 28 楼』:  

re slore
不会如兄所说没有符合要求组合,因为我是经过一番挑选后求得这一结果,然后出的题目。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-3-3 21:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 29 楼』:  



  Quote:
Originally posted by ccwan at 2007-3-3 08:49:
re slore
不会如兄所说没有符合要求组合,因为我是经过一番挑选后求得这一结果,然后出的题目。

那你的数字是38个么?

你发短消息给我你的那个数字吧。
我觉得分析的没有错误啊。。。不会是计算上的吧~

2007-3-3 21:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 30 楼』:  







三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-3-3 21:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: