[快速幂] bat实现快速算底数的n次幂
bat吧
全部回复
仅看楼主
level 11
uchan 楼主
顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。 --- 百度百科
看到代码比较简单,就用bat实现了..
2019年03月07日 05点03分 1
level 11
uchan 楼主
@echo off
echo. 返回a^^b的值.
set /p a=请输入a:
set /p b=请输入b:
call :pow %a% %b%
echo. %errorlevel%
pause>nul&exit 0
:: 返回 %1^%2 的值
:pow
setlocal
set ans=1
set "base=%~1"
set "index=%~2"
if %index% lss 0 (echo.错误:不支持负指数幂运算&exit /b -1)
:pow_loop
if "%index%"=="0" endlocal&exit /b %ans%
set /a "tmp=%index%&1"
if not "%tmp%"=="0" (set /a "ans=%ans%*%base%")
set /a "base=%base%*%base%"
set /a "index=%index%>>1"
goto :pow_loop
2019年03月07日 05点03分 2
上限: 2^31-1, 下限: -2^31
2019年03月07日 05点03分
@uchan bat没有long long[滑稽][捂嘴笑]
2019年03月10日 06点03分
level 9
目测楼主oier
2019年03月09日 07点03分 4
可啪,我也是OIer啊,但是...batdalao真少见
2019年03月10日 06点03分
@原来名字不好💦 目测你提高了而且是个高中生
2019年03月14日 22点03分
@ColorOSMan 同oier qwq
2019年03月23日 01点03分
1