[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off&setlocal enabledelayedexpansion
  2. echo %time%&set /a n=9
  3. :continue
  4. set /a n+=1,cube=n*n*n,biq=cube*n & set "comb=!cube!!biq!"
  5. if "!comb:~9,1!" equ "" goto :continue
  6. if "!comb:~10,1!" equ "" ( setlocal enabledelayedexpansion
  7. for /l %%i in (0,1,9) do set "!comb:~%%i,1!=Y"
  8. if "!1!!2!!3!!4!!5!!6!!7!!8!!9!!0!"=="YYYYYYYYYY" echo !n!的3次方=!cube!, !n!的4次方=!biq!
  9. endlocal
  10. ) else goto :break
  11. goto :continue
  12. :break
  13. echo 求解结束&echo %time%&pause
复制代码

[ 本帖最后由 neorobin 于 2010-4-14 21:38 编辑 ]
2

评分人数

TOP

回复 15楼 的帖子

原帖由 hanyeguxing 于 2010-4-14 22:56 发表
因为 n 的3次方为4位数,所以 n 的范围为10到21
因为 n 的4次方为6位数,所以 n 的范围为18到31
所以 n 的交集范围为18到21
尾数为0、1、5的数字,其3次方与4次方尾数全相同,所以排除20、21,剩余18、19。
因为 ...
哈哈, 确实用推导就出来了, 补充一下, 个位为 0,1,5,6 的任意次方个位总不变, 都排除.
当然, [10到21], [18到31] 这两个区间的界限到是可以用开方(也要非穷举的好算法)的批处理来求得, 排除 0,1,5,6 这样明显的问题这不必写代码来推导了, 之后变成在一个更小的范围内做一个更有限的穷举来解

PS: 穷举也不是彻底不可用, 当穷举元素数量总是少得达到可以接受的程度, 往往那样的列举只是没在意罢了, 实质上也还是穷举, 比如从 1 循环到 2

[ 本帖最后由 neorobin 于 2010-4-14 23:19 编辑 ]

TOP

返回列表