[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

回复 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

穷举累的是机器,又不是我,我不心疼,嘿嘿。。。有版聊之嫌,闪。。。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 17楼 的帖子

一个帖子下也不能全是代码啦~
个人感觉这次解题过程比较精彩的(是人为解题部分 哈哈)。

TOP

[code]
@echo off&setlocal EnableDelayedExpansion
for /l %%a in (-100,1,100) do (set/a _3=%%a*%%a*%%a,_4=_3*%%a
if "!_3:~4,1!"=="" if not "!_3:~3,1!"=="" if "!_4:~6,1!"=="" if not "!_4:~5,1!"=="" (set stx=0123456789
for %%d in (3,4) do for /l %%b in (0,1,5) do set _0=!_%%d:~%%b,1!&for %%c in (!_0!) do set stx=!stx:%%c=!
if not defined stx echo %%a))
pause>nul
[/cdde]

TOP

  1. @echo off&setlocal EnableDelayedExpansion
  2. for /l %%a in (-100,1,100) do (set/a _3=%%a*%%a*%%a,_4=_3*%%a
  3. if "!_3:~4,1!"=="" if not "!_3:~3,1!"=="" if "!_4:~6,1!"=="" if not "!_4:~5,1!"=="" (set stx=0123456789
  4. for %%d in (3,4) do for /l %%b in (0,1,5) do set _0=!_%%d:~%%b,1!&for %%c in (!_0!) do set stx=!stx:%%c=!
  5. if not defined stx echo %%a))
  6. pause>nul
复制代码

TOP

  1. @echo off&setlocal EnableDelayedExpansion
  2. for /l %%a in (-100,1,100) do (set/a _3=%%a*%%a*%%a,_4=_3*%%a
  3. if "!_3:~4,1!"=="" if not "!_3:~3,1!"=="" if "!_4:~6,1!"=="" if not "!_4:~5,1!"=="" (set stx=0123456789
  4. for %%d in (3,4) do for /l %%b in (0,1,5) do set _0=!_%%d:~%%b,1!&for %%c in (!_0!) do set stx=!stx:%%c=!
  5. if not defined stx echo %%a))
  6. pause>nul
复制代码

TOP

返回列表