当前位置: 首页 > 图文教程 > 脚本技术 > DOS/BAT > 用批处理解决数学问题的代码

DOS/BAT
批处理制作照片整理器
可以生成SLEEP.EXE的延时命令的bat文件
用bat批量创建文件夹
bat批处理实现的创建10个文件夹,文件夹再包含5个空文件夹
bat延时执行命令的另一种方法
windows服务操作之删除服务 批处理实现
批处理 远程控制
使用批处理修改web打印设置笔记 适用于IE
批处理 结束麦咖啡进程的代码
cmd fsutil 命令新建空文本文件
cmd Tasklist与Tskill管理Windows系统进程
批处理 正则表达式(findstr) 整理
bat 文件 学习使用指南
for 语句从入门到精通
dos 目录跳转 cd
tree 以树形格式罗列文件
dos 内容重定向
dos if 条件判断
dos 流程跳转 goto
dos 文件复制 copy命令

DOS/BAT 中的 用批处理解决数学问题的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 234 ::
收藏到网摘: n/a

#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,求被除数。
#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的余数是多少。
========================================================================================
解决代码
========================================================================================
【01】by [lxmxn]
========================================================================================
@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
========================================================================================
【02】by [lxmxn]
========================================================================================
========================================================================================
【03】by [youxi01]
========================================================================================
@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
)
========================================================================================
【04】by [youxi01]
========================================================================================
@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
========================================================================================
【05】by [youxi01]
========================================================================================
@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
========================================================================================
【06】by [youxi01]
========================================================================================
::答案是: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......
========================================================================================
【07】by [youxi01]
========================================================================================
::答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下测试通过
========================================================================================
【08】by [youxi01]
========================================================================================
@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
========================================================================================
【09】by [youxi01]
========================================================================================
@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
========================================================================================
【10】by [youxi01]
========================================================================================
@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
========================================================================================
【11】by [youxi01]
========================================================================================
::第11题稍微难一点。利用高中的数学知识可以证明,凡是大于等于4的数,它都可以这样的两个数,它们
::的和与该数相等,乘积要大于等于该数。根据这样的推论,所有的数最后都会拆成这样的形式:
::A*A*A*A....A为2或者3(因为只有2和3不能拆了,最后剩下的肯定只有2和3)。所以我们就可以得到下面
::的代码:(答案是486,我不知道对不对^-^)
@echo off
setlocal enabledelayedexpansion
set num=17
set /a Cnum=%num%/3
set /a Rnum=%num%%%2
set /a Tnum=0
for /l %%i in (%Rnum% 2 %Cnum%) do (
set num_=1
set /a num_tem=%num%/2-%%i*3/2
for /l %%a in (1 1 %%i) do (
set /a num_*=3)
for /l %%b in (1 1 !num_tem!) do (
set /a num_*=2)
if !num_! gtr !Tnum! set /a Tnum=!num_!
)
echo !Tnum!
pause>nul
========================================================================================
【12】by [youxi01]
========================================================================================
@echo off
echo 正在检测数据........
setlocal enabledelayedexpansion
set /a num=1
set /a flag=0
for /l %%i in (2 1 10000) do (
call :test %%i
echo %%i !flag!)
:exit
echo 最小的自然数为:!num!
echo.
echo 检测完毕!
pause>nul
:test
set /a num=!num!*%1
for /l %%i in (1 1 5) do (
if !num:~-1! EQU 0 (set /a flag+=1 & set /a num=!num:~0,-1!) else (
set /a num=!num:~-1! & goto :eof))
========================================================================================
【13】by [youxi01]
========================================================================================
@echo off
echo 正在检测数据........
setlocal enabledelayedexpansion
for /l %%a in (90 1 180) do (
for /l %%b in (1 1 %%a) do (
set /a num=%%a %% %%b
if !num! EQU 0 (
set /a num=%%a/%%b
set /a num_=!num!+%%a+%%b
if !num_! EQU 181 echo 这样的数有,被除数:%%a 除数:%%b 商:!num!
)
)
)
echo.
echo 检测完毕!
pause>nul