中国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]  >>   >
作者:
标题: [讨论][探讨] 用批处理作趣味数学题 上一主题 | 下一主题
zouzhxi
中级用户

蝴蝶之吻


积分 430
发帖 177
注册 2006-9-20
来自 广东深圳
状态 离线
『楼 主』:  [讨论][探讨] 用批处理作趣味数学题

1、求水仙花数。(水仙花数是这样的数字:这个数各个数位上数字的立方和等于该数。比如 153=1*1*1+5*5*5+3*3*3) 解决方案:4F 2、有四个数,其中任意三个数相加,所得的和分别是84,88,99,110,求这四个数? 解决方案:11F、 3、赵姑娘的岁数有以下特点: ①. 它的3次方是一个四位数,而4次方是一个六位数; ②. 这四位数和六位数正好是0到9这十个数字组成. 问,这个数应该是什么数? 解决方案:12F 4、排一本辞典的页码共用了4889个数字。这本辞典共有多少页? 答案:1499 解决方案:15F 5、阿聪说他这次去西北看见一群骆驼,共有23个驼峰,60只脚。请问单、双峰骆驼各多少只? 解决方案:15F 6、有一个五位奇数,将这个五位奇数中的所有2都换成5,所有5也都换成2,其他数保持不变,得到一个新的五位数,若新五位数的一半仍比原五位数大1,那么原五位数是多少? 解决方案:23F、26F 7、五个连续自然数的和分别能被2、3、4、5、6整除,求满足此条件的最小的一组数。 解决方案:24F 8、我是个三位数,其中有一个数字是"3",还有一个数字是"1",另一个数字是未知数。如果把"3"变成"4"、把"1"变成"3",那么,原来的我将比假设后的我的一半还少"9"。你知道原来是个什么数? 解决方案:30F、 9、农夫琼斯对他老婆说:"喂,玛丽亚,如果照我的办法,卖掉75只小鸡,那么咱们的鸡饲料还能维持20夭。然而,假使照你的建议,再买进100只小鸡的话,那么鸡饲料将只够维持15天。" "啊,亲爱的,"她答道,"那我们现在有多少只小鸡呢?" 问题就在这里了,他们究竟有多少只小鸡? 解决方案:30F 10、在所有的5位数当中,只包含两个3的数字有多少个? 解决方案:30F 11、将17分成几个自然数的和,求这几个自然数的最大乘积是多少? 解决方案:31F 12、将自然数2、3......乘到一起,它们的积的最后6位数恰好都是0,最后一个自然数最少可能是几? 解决方案:31F 13、被除数、除数和商三个数的和是181,商是12,求被除数。 解决方案:31F 14、商店里有六箱货物,分别重15、16、18、19、20、31千克,两个顾客买走了其中五箱.已知一个顾客买的货物重量是另一个顾客的2倍,那么,商店剩下的一箱货物重量是多少千克? 解决方案:33F 15、一个数除以3的余数是2,除以5的余数是1,则这个数除以15的余数是多少? 解决方案:35F 16、 ①. p是质数,且p×p+1也是质数。求2006×p。解决方案:暂无 ②. 2006个2的乘积除以7的余数是多少。解决方案:40F 17、传说在印度的一个圣庙里安放着一个黄铜板,板上插着三根宝石针,在第一根宝石针上,从下到上依次穿着从大到小的64片中心有孔的金片,圣庙里的僧人按下面规则移动金片:每次只能移动一片,而且小片永远要放在大片的上面。当时传说,当64片金片都移动到另一根宝石针上的时候,世界将在一声霹雳中毁灭。把64片金片移动到另一根宝石针上,需要移动多少次呢?这是一个非常大的数字! 答案:18446744073709551615 解决方案:42F 18、有十张币值分别为1分、2分、5分、1角、2角、5角、1元、2元、5元、10元的人民币,能组成多少种不同的币值? 解决方案:43F 19、两个十位数3333333333和9999999999的乘积里有几个数字是偶数? (只用乘减法能做吗?) 解决方案:65F 20、甲、乙、丙三个互相咬合的齿轮,若使甲轮转5圈时,乙轮转7圈,丙轮转2圈,这三个齿轮齿数最少应分别是多少齿? 解决方案:66F 21、有两盆水,一冷一热。冷水盆里有个温度计,用一个小杯子去弄一杯热水倒到冷水里,发现温度上升了 5 度,再倒一杯热水进去,又上升了 3 度,问再倒一杯下去,会再上升几度?(此题由NaturalJ0提供) 解决方案:76F 22、求勾股数 解决方案:8F、9F #23 ? 称珠子= 有243颗外形一模一样的珠子,其中有一颗稍重一点。用一架没有砝码的天平,至少称几次才能找出这颗珠子来? #24 ? 坐井观天的青蛙= 坐井观天的那只青蛙一天突然心血来潮,想到外面的世界去看看,井深九尺,青蛙一次只能蹦三尺高,如果这样青蛙要蹦几次才能跳出井口呢? #25 ? 鸡狗各多少= 小鸡、小狗七十九,二百只脚在地上走,想一想,算一算,多少只鸡?多少只狗? #26 ? 大、小和尚各有几= 这是一道古算题:百个和尚百个粑,大和尚每人粑四个,小和尚四人一个粑,大、小和尚各有几? #??? 新题目 www.cn-dos.net/forum ... ——————————————分割线——————————————— *********************************** 版务日志 *********************************** 操 作: 主题加精 执行人: 3742668 原 因: 感谢zouzhxi和youxi01以及楼下各 位带来如此精彩的一贴。"共同学 习,共同进步“的宗旨在本贴中体 现得淋漓尽致。 说 明: 由于目前并没有一个明确的加精依 据,所以如果对此次操作持怀疑态度 的朋友可以跟贴指出,或者于站内 的消息系统留言说明。 *********************************** [ Last edited by zouzhxi on 2007-8-21 at 12:16 PM ]


   此帖被 +7 点积分        点击查看详情   
评分人:【 redtek 分数: +5  时间:2006-11-16 06:46
评分人:【 AlexZhang 分数: +2  时间:2007-7-3 10:45


附件 1: 用批处理作趣味数学题(问题加代码).txt (2006-11-19 02:13, 19.94 K, 下载附件所需积分 1 点 ,下载次数: 122)
附件 2: 用批处理作趣味数学题(问题加代码).txt (2006-11-22 00:30, 20.16 K, 下载附件所需积分 1 点 ,下载次数: 96)


2006-11-12 08:20
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 2 楼』:  

符合勾股定律的数有很多啊,你怎么说(在数字1000000000000以内只有一个5*5=3*3+4*4这样一组数)啊? 比如:10*10=6*6+8*8等 [ Last edited by 不得不爱 on 2006-11-11 at 08:59 PM ]




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

蝴蝶之吻


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

是的, 运行的时候,我等了半小时,,, 得出的就是只有这一组,其他的,都是不相等的... 比如:6*6 ≠4*4+5*5




2006-11-12 08:59
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
lxmxn
版主




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

  在3位整数里面,只有153、370、371、407是符合水仙花数特点的。   请大家测试这个代码:
@echo off&&setlocal ENABLEDELAYEDEXPANSION
for %%a in (1 2 3 4 5 6 7 8 9) do (
	for %%b in (0 1 2 3 4 5 6 7 8 9) do (
		for %%c in (0 1 2 3 4 5 6 7 8 9) do (
			set/a result=%%a*%%a*%%a+%%b*%%b*%%b+%%c*%%c*%%c
			if "!result!"=="%%a%%b%%c" (
				echo %%a%%b%%c是水仙花数!
			)

		)
	)
)
pause


2006-11-12 09:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 5 楼』:  

原来批处理的算法也如此有趣




C:\>BLOG initiative.yo2.cn/ C:\>hh.exe ntcmds.chm::/ntcmds.htm C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-11-12 09:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


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

  lxmxn 在4F的代码还可以精简一下,把 for %%a 换成 for /l 计数循环就可以省略掉数字的列举了。




尺有所短,寸有所长,学好CMD没商量。 考虑问题复杂化,解决问题简洁化。
2006-11-12 11:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 7 楼』:  

4位数:1634、8208、9474 5位数:54748、92727、93084 ^_^


2006-11-12 12:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


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

  勾股数的算法如下,奇怪的是,同是用 for /l 计数循环,计算水仙花数的速度非常快,而计算勾股数就非常的慢了:
@echo off
echo.
echo 100以内的勾股数如下:
echo.
setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do (
    for /l %%j in (1,1,100) do (
        for /l %%k in (1,1,100) do (
            set /a a=%%i*%%i
            set /a b=%%j*%%j
            set /a c=%%k*%%k
            set /a sum=!a!+!b!
            if !sum! equ !c! echo %%i %%j %%k
        )
    )
)
pause




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




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

TO:8楼斑竹:“勾股数的算法如下,奇怪的是,同是用 for /l 计数循环,计算水仙花数的速度非常快,而计算勾股数就非常的慢了:”你的计算量是前面的一千倍了,当然速度要慢的多。 可以对代码稍做修改,不仅可以剔除相同项(如:3 4 5和4 3 5)而且可以大大提高运行效率:
@echo off
echo.
echo 100以内的勾股数如下:
echo.
setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do (
    for /l %%j in (%%i,1,100) do (
        for /l %%k in (%%j,1,100) do (
            set /a a=%%i*%%i
            set /a b=%%j*%%j
            set /a c=%%k*%%k
            set /a sum=!a!+!b!
            if !sum! equ !c! echo %%i %%j %%k
        )
    )
)
pause
[ Last edited by youxi01 on 2006-11-16 at 11:41 PM ]


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

batch fan


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

  呵呵,没有考虑到剔除相同的结果,确实会使得计算量大为增加。




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

蝴蝶之吻


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

我算的勾股数这样的:5*5=4*4+3*3是一组连继数字
另一题: 有四个数,其中任意三个数相加,所得的和分别是84,88,99,110,求这四个数? 我的方法是这样的,写出来给你们看,不要笑呀.
@ECHO OFF
echo.
setlocal enabledelayedexpansion
SET A=84
SET B=88
SET C=99
SET D=110
SET /A ABCD=A+B+C+D
SET /A SUM=ABCD/3
SET /A NO1=SUM-A
SET /A NO2=SUM-B
SET /A NO3=SUM-C
SET /A NO4=SUM-D
ECHO.
ECHO.NO1^=%NO1%
ECHO.NO2^=%NO2%
ECHO.NO3^=%NO3%
ECHO.NO4^=%NO4%
PAUSE
你们还有什么简单点的法子!!!!
再来一题:
赵姑娘的岁数有以下特点: 1. 它的3次方是一个四位数,而4次方是一个六位数; 2. 这四位数和六位数正好是0到9这十个数字组成. 问,这个数应该是什么数?
[ Last edited by zouzhxi on 2006-11-13 at 02:28 AM ]




2006-11-13 02:26
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
youxi01
高级用户




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

该小女子芳龄18。献丑了: @echo off setlocal enabledelayedexpansion for /l %%i in (10 1 30) do ( ::清空变量 set flag= for /l %%a in (0 1 9) do set %%a= ::取得立方和四次方 set /a cube=%%i*%%i*%%i set /a s=!cube!*%%i if !cube! geq 1000 if !cube! lss 10000 ( if !s! geq 100000 if !s! lss 1000000 ( set num=!s!!cube! call :test !num! if not defined flag echo %%i !num! ) ) ) pause>nul :test for /l %%a in (0 1 9) do ( set var=%1 ::将参数的第一个数字赋值给var_;检查变量值!var_!是否已经被作为变量被定义。 set var_=!var:~%%a,1! if defined !var_! set flag=1 & goto :eof set !var_!=A )


2006-11-13 08:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




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

  强啊~


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

蝴蝶之吻


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

再来一条,
排一本辞典的页码共用了4889个数字。这本辞典共有多少页? 答案:1499。
阿聪说他这次去西北看见一群骆驼,共有23个驼峰,60只脚。请问单、双峰骆驼各多少只?
闪人,去吃饭了...呵呵...星期一来逛... [ Last edited by zouzhxi on 2006-11-13 at 10:10 AM ]




2006-11-13 10:06
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
youxi01
高级用户




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

一、 @echo off set /a t_num=0 setlocal enabledelayedexpansion echo 正在检测数据..... for /l %%i in (1 1 4889) do ( if !t_num! lss 4889 ( if %%i lss 10 set /a t_num+=1 if %%i geq 10 if %%i lss 100 set /a t_num+=2 if %%i geq 100 if %%i lss 1000 set /a t_num+=3 if %%i geq 1000 set /a t_num+=4 ) else set /a num=%%i-1 & goto :exit ) :exit echo 要求的数为:%num% pause>nul 二、 @echo off set /a F_num=23 set /a J_num=60/4 setlocal enabledelayedexpansion for /l %%i in (1 1 %J_num%) do ( set /a S_num=%%i set /a B_num=%J_num%-%%i set /a num=!S_num!+2*!B_num! call :test !num! !S_num! !B_num! ) pause>nul :test if %1 EQU %F_num% echo 可能的组合为:单峰数目=%2 双峰数目=%3 goto :eof


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


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



论坛跳转: