返回列表 发帖
@echo off
:begin
cls&setlocal enabledelayedexpansion
set/p s=please input number:
set/a n=1
:loop
set/a n+=1,x=2*s-n*n-n,y=2*n,mod=x%%y,a=x/y,m=(n*n+n)/2
if %mod% equ 0 (
for /l %%i in (1,1,%n%) do (
set/a a+=1&set "str=!str!!a!+"
)
echo %s%^=!str:~,-1!&set "str="
)
if %m% gtr %s% (pause&endlocal&goto begin) else goto loopCOPY
2

评分人数

TOP

这么久了
没有人有效率更高的思路吗?我再想想
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

@echo off&setlocal enabledelayedexpansion
set /p p=输入一个数字(大于0且小于2^32):
set a=0
:begin
set ok=
set /a a+=1
if %a% gtr %p% goto over
set b=%a%
set d=%a%
:do
set /a b=b+1
set /a d=d+b
if %d% lss %p% goto :do
if %d% equ %p%  (
for /l %%i in (%a% 1 %b% ) do set ok=!ok!+%%i
echo %p%=!ok:~1!
echo.&goto begin
)
if %d% gtr %p% goto begin
:over
echo 完成了&pause>nulCOPY
只有这个逐个算下去的思路  效率实在太低了
1

评分人数

o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

又一道挑战效率的题目,。

回复2楼
n (n<2^32)
表示n小于 2的32次方。即不超过cmd的最大数值范围。

[ 本帖最后由 随风 于 2009-8-29 12:27 编辑 ]
技术问题请到论坛发帖求助!

TOP

效率很低:
@echo off
:bgn
Setlocal Enabledelayedexpansion
set /p in=请输入:
if not defined in goto :eof
echo.
set /a n=in-1,m=0
:agn
set /a m+=1,ans=0&set "ans_str="
for /l %%a in (%m% 1 %n%) do (
   set /a ans+=%%a
   set "ans_str=!ans_str!%%a+"
   if !ans! gtr %in% (
      goto :agn
   ) else (
      if "!ans!"=="%in%" (
         set ans_str=!ans_str:~,-1!
         echo.!in!=!ans_str!&echo.
         goto :agn
      )
   )
)
endlocal
goto :bgnCOPY
1

评分人数

    • pusofalse: 感谢参与,并学习代码。PB + 6

TOP

n (n<2^32)
" ^ "是什么意思

TOP

返回列表