中国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] [5] [6] [7] [8] [9] [10] »
作者:
标题: [讨论][探讨] 用批处理作趣味数学题 上一主题 | 下一主题
ccwan
金牌会员




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

不错。对算法有研究。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-11-13 21:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kennyfan
中级用户




积分 259
发帖 112
注册 2006-9-18
状态 离线
『第 17 楼』:  

哇..深入...学习ing!!!

2006-11-13 22:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zouzhxi
中级用户

蝴蝶之吻


积分 430
发帖 177
注册 2006-9-20
来自 广东深圳
状态 离线
『第 18 楼』:  

为了促进算法研究,,,呵呵。。

  Quote:
有一个五位奇数,将这个五位奇数中的所有2都换成5,所有5也都换成2,其他数保持不变,得到一个新的五位数,若新五位数的一半仍比原五位数大1,那么原五位数是多少?





Butterfly Kiss Blog
计算机DIY联盟论坛
2006-11-15 00:26
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 19 楼』:  

哈哈……有意思~:)
可以开批处理与数据结构算法专版了~:)



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-15 00:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zouzhxi
中级用户

蝴蝶之吻


积分 430
发帖 177
注册 2006-9-20
来自 广东深圳
状态 离线
『第 20 楼』:  



  Quote:
五个连续自然数的和分别能被2、3、4、5、6整除,求满足此条件的最小的一组数。





Butterfly Kiss Blog
计算机DIY联盟论坛
2006-11-15 02:25
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
Michale
初级用户




积分 52
发帖 27
注册 2006-10-6
来自 ☆逍遥宫☆
状态 离线
『第 21 楼』:  

不错~~看了那么的处理~~觉得楼上的几个处理蛮漂亮的~~值得大家一起来研究研究~~谢谢大家~~~

2006-11-15 03:56
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 22 楼』:  

  建议 zouzhxi 把所有的问题都集中在顶楼,以 序号+内容 的格式列出来,每解决一个,就在这个序号后做个标记或者说明,这样就能让大家看到这个帖子都有哪些有意思的话题。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-15 06:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




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

终于又回来了!
回18楼,答案是:29995。
给出的测试代码:
@echo off & echo 正在检测数据...
setlocal enabledelayedexpansion
for /l %%a in (0 1 9) do (
   for /l %%b in (0 1 9) do (
     for /l %%c in (0 1 9) do (
       set/a Fnum=2%%a%%b%%c5
       set Bnum=!Fnum:5=A!
       set Bnum=!Bnum:2=5!
       set/a Bnum=!Bnum:A=2!
       set/a Fnum_=2*!Fnum!+2
       if !Bnum! EQU !Fnum_! echo !Fnum!
       )))
echo 检测完毕!
pause>nul
说明:该程序在XP pro sp2下测试通过。
解决这个问题,首先我们要明确这个数字结尾必须是5,因为只有这样,才可以在转化后才是偶数,才可以被2整除;而且首位数字必须是2......

[ Last edited by youxi01 on 2006-11-16 at 11:38 PM ]

2006-11-15 07:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




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

答20楼:答案是10 11 12 13 14
@echo off
echo 正在检测数据....
setlocal enabledelayedexpansion
for /l %%i in (1 1 10000) do (
   set /a flag=0
   set /a num=5*%%i+10
   set /a num1=!num!%%4
   set /a num2=!num!%%5
   set /a num3=!num!%%6
   for %%a in (!num1! !num2! !num3!) do (
      if %%a NEQ 0 set /a flag=1
    )
   if !flag! EQU 0 set /a num=%%i & goto :exit
)
:exit
for /l %%i in (0 1 4) do (
   set /a num%%i=%num%+%%i
)
echo 要求的连续的5个自然数为:%num0% %num1% %num2% %num3% %num4%
pause>nul
xp pro sp2下测试通过。

[ Last edited by youxi01 on 2006-11-16 at 11:38 PM ]

2006-11-15 07:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zouzhxi
中级用户

蝴蝶之吻


积分 430
发帖 177
注册 2006-9-20
来自 广东深圳
状态 离线
『第 25 楼』:  

应namejm的要求:

  Quote:
#序号 !解决 ?未解决

#01 !
求水仙花数?

#02 !
有四个数,其中任意三个数相加,所得的和分别是84,88,99,110,求这四个数?

#03 !
赵姑娘的岁数有以下特点:
  1. 它的3次方是一个四位数,而4次方是一个六位数;
  2. 这四位数和六位数正好是0到9这十个数字组成.
  问,这个数应该是什么数?

#04 !
排一本辞典的页码共用了4889个数字。这本辞典共有多少页? 答案:1499

#05 !
阿聪说他这次去西北看见一群骆驼,共有23个驼峰,60只脚。请问单、双峰骆驼各多少只?

#06 !
有一个五位奇数,将这个五位奇数中的所有2都换成5,所有5也都换成2,其他数保持不变,得到一个新的五位数,若新五位数的一半仍比原五位数大1,那么原五位数是多少?

#07 !
五个连续自然数的和分别能被2、3、4、5、6整除,求满足此条件的最小的一组数。

#08 !
我是个三位数,其中有一个数字是“3”,还有一个数字是“1”,另一个数字是未知数。如果把“3”变成“4”、把“1”变成“3”,那么,原来的我将比假设后的我的一半还少“9”。你知道原来是个什么数?

#09 ?
农夫琼斯对他老婆说:"喂,玛丽亚,如果照我的办法,卖掉75只小鸡,那么咱们的鸡饲料还能维持20夭。然而,假使照你的建议,再买进100只小鸡的话,那么鸡饲料将只够维持15天。"
"啊,亲爱的,"她答道,"那我们现在有多少只小鸡呢?"
问题就在这里了,他们究竟有多少只小鸡?

#10 !
在所有的5位数当中,只包含两个3的数字有多少个?

#11 !
将17分成几个自然数的和,求这几个自然数的最大乘积是多少?

#12 ?
将自然数2、3......乘到一起,它们的积的最后6位数恰好都是0,最后一个自然数最少可能是几?

#13 !
被除数、除数和商三个数的和是181,商是12,求被除数。



  Quote:
#14 ?
商店里有六箱货物,分别重15、16、18、19、20、31千克,两个顾客买走了其中五箱.已知一个顾客买的货物重量是另一个顾客的2倍,那么,商店剩下的一箱货物重量是多少千克?

#15 ?
一个数除以3的余数是2,除以5的余数是1,则这个数除以15的余数是多少?

#16 ?
    1.  p是质数,且p×p+1也是质数。求2006×p。
    2.  2006个2的乘积除以7的余数是多少。

[ Last edited by zouzhxi on 2006-11-15 at 09:39 PM ]



Butterfly Kiss Blog
计算机DIY联盟论坛
2006-11-15 08:10
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 26 楼』:  



  Quote:
Originally posted by youxi01 at 2006-11-14 18:24:
解决这个问题,首先我们要明确这个数字结尾必须是5,因为只有这样,才可以在转化后才是偶数,才可以被2整除;而且首位数字必须是2......

  23F的思路有缺陷,因为我们要做的,就是用代码来模拟题意,如果能直接推出某些条件,则可以充分利用这些条件;如果需要经过两步以上的推理才能得出的条件,最好不要使用,而应交给代码来处理;否则,既然经过两步推理得出的条件可以使用,那么,三步的呢?四步的呢?N步的呢?最后一步不就包含在第N步中么?那样的话,我们完全可以把需要经过N步才能得出的结论直接写出来,从而完全抛弃代码——虽然最后你的结果是正确的,但是建议不要这样做。

  在23F的基础上,给出一个解决18F的问题、尽量模拟题意的代码(速度很慢):
@echo off
setlocal enabledelayedexpansion
for /l %%i in (10001,2,99999) do (
    set num=%%i
    set num=!num:5=a!
    if not "!num!"=="%%i" (
        set num_tmp1=!num!
        set num=!num:2=5!
        if not "!num!"=="!num_tmp1!" (
            set num=!num:a=2!
            set /a num_tmp2=2*%%i+2
            if !num! equ !num_tmp2! echo %%i
        )
    )
)
pause
  再给出一个比较快一点的代码:
@echo off
setlocal enabledelayedexpansion
for /l %%i in (10005,5,99995) do (
    set num=%%i
    set num=!num:5=a!
    if not "!num!"=="%%i" (
        set num_tmp1=!num!
        set num=!num:2=5!
        if not "!num!"=="!num_tmp1!" (
            set num=!num:a=2!
            set /a num_tmp2=2*%%i+2
            if !num! equ !num_tmp2! echo %%i
        )
    )
)
pause
  23F的代码可精简为:
@echo off
setlocal enabledelayedexpansion
for /l %%i in (20005,5,29995) do (
    set num=%%i
    set num=!num:5=a!
    set num=!num:2=5!
    set num=!num:a=2!
    set /a num_tmp=2*%%i+2
    if !num! equ !num_tmp! echo %%i
)
pause
[ Last edited by namejm on 2006-11-15 at 12:57 PM ]



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-15 08:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




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

对于楼上的斑竹的  “因为我们要做的,就是用代码来模拟题意,如果能直接推出某些条件,则可以充分利用这些条件;如果需要经过两步以上的推理才能得出的条件”  的说法,在下不敢苟同!

我曾经用(纯)批处理写过一篇求100000之内的素数的问题,如果根据楼上的说法,模拟题意的话,那写出的代码运行效率实在是不敢恭维!

对于一些推导性的结论,特别是比较快速的可以推导的结论,我觉得就都可以运用。

2006-11-15 08:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 28 楼』:  

  呵呵,不敢苟同的做法是对的,因为我没有说出我的前提条件:当我们要研究某些通用算法的时候,应该尽量模拟题意写代码;如果是写应用型的脚本,基于效率优先的原则,则可以充分利用一切可以正确推导出来的条件——在这里之所以提出尽量模拟的说法,是因为我们在这里主要讨论的是通用算法。当然,并不意味着要排斥技巧性非常强的代码。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-15 08:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 29 楼』:  


  在用批处理玩数字游戏的时候,要注意数字的范围哦,超过就会溢出了。

  -2147483648——2147483647        (WINDOWS XP SP2 @ CMD Shell)


2006-11-15 09:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




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

不错,好多问题了!先回答几题!
第八题:
@echo off
rem 经推算,首位数字必须为1,(除非未知数为1,为1的情况在第一个for中也处理了)
setlocal enabledelayedexpansion
for /l %%i in (0 1 9) do (
   set /a Fnum=1%%i3
   set /a Bnum=3%%i4
   set /a num=!Bnum!/2-9
   if !Fnum! EQU !num! echo !Fnum!)

for /l %%i in (0 1 9) do (
   set /a Fnum=13%%i
   set /a Bnum=34%%i
   set /a num=!Bnum!/2-9
   if !Fnum! EQU !num! echo !Fnum!)
pause>nul
第九题:
@echo off
rem 小鸡的只数至少有76只:

setlocal enabledelayedexpansion
for /l %%i in (76 1 10000) do (
   set /a Fnum=%%i*20-75*20
   set /a Bnum=%%i*15+100*15
  if !Fnum! EQU !Bnum! echo 小鸡的只数为:%%i & goto :exit)
:exit
pause>nul
第十题:来一个比较巧一点的办法:(效率可能相对要高,没测试!)
@echo off
echo 正在检测数据........
setlocal enabledelayedexpansion
set /a flag=0
for /l %%i in (10000,1,99999) do (
   set num=%%i
rem 前面加个1是为了防止类似30820的特殊情况。
   set /a num=1!num:3=!
   if !num! lss 2000 if !num! gtr 200 set /a flag+=1)
echo %flag%
echo 检测完毕!
pause>nul
[ Last edited by youxi01 on 2006-11-16 at 11:41 PM ]

2006-11-15 12:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: