当前位置: 移动技术网 > IT编程>网络>Dos/Bat > 用批处理解决数学问题的代码第1/4页

用批处理解决数学问题的代码第1/4页

2017年12月12日  | 移动技术网IT编程  | 我要评论
#01 ! 求水仙花数? #02 ! 有四个数,其中任意三个数相加,所得的和分别是84,88,99,110,求这四个数? #03 ! 赵姑娘的岁数有以下特点: 1. 它的3

【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
4

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网