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


不如把 (1 1 10) 改成 (2 1 11)

TOP

本帖最后由 zm900612 于 2011-7-1 17:42 编辑
  1. @echo off
  2. set "n=m*!!8*m*!!7*m*!!6*m*!!5*m*!!4*m*!!3*m*!!2*m*!!1*m"
  3. setlocal enabledelayedexpansion
  4. for /l %%a in (1 1 9) do (
  5. set /a m=%%a,"num=!n:*%%a*=!"
  6. echo !num!
  7. )
  8. pause
复制代码
  1. set m=9
  2. for /f "tokens=%m%* delims=/" %%a in ("1/m/m/m/m/m/m/m/m/1") do set /a "n=m*m*m*m*m*m*m*m*m/%%b"
  3. echo %n%
  4. pause
复制代码
修改了下bug

TOP

刚刚代码没有考虑周全,已经修改。
也可以用单条set写出兼容 1~9 次方的函数,虽然高效,但是写起来太长了...

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (8 -1 0) do (
  3. set /a "tmp=1<<%%a"
  4. set "str=!str!*(^!^!(!tmp!>>m)+^!(!tmp!>>m)*m)"
  5. )
  6. for /l %%a in (1 1 9) do (
  7. set /a m=%%a,"n=!str:~1!"
  8. echo !n!
  9. )
  10. pause
复制代码

TOP

确实有点复杂,但是我的目的是写成函数,以便节省循环中计算N的N次方时的耗时,所以单次运行时是没有什么优势的

TOP

返回列表