この問題は、限界の大きさが簡単に求められるのであとはしらみつぶしです。ただ4乗で8分かかったので、5乗だと100分くらいかかりそうです。
@echo off setlocal enabledelayedexpansion set /a N = 4 call :calc_pows pows %N% call :calc_max_n %N% set /a max_n = %ERRORLEVEL% set /a s = 0 for /L %%n in (2, 1, %max_n%) do ( call :sum_digits_pow %%n if !ERRORLEVEL! == %%n set /a s += %%n ) echo %s% exit /b 0 :calc_pows for /L %%d in (0, 1, 9) do ( call :pow %%d %2 set /a %1_%%d = !ERRORLEVEL! ) exit /b 0 :calc_max_n setlocal set /a e = 1 set /a mm = 0 :loop_calc_max_n set /a m = n * %pows_9% set /a mm = %mm% * 10 + 9 if %m% LSS %mm% exit /b %m% goto :loop_calc_max_n :sum_digits_pow setlocal if %1 == 0 exit /b 0 set /a div = %1 / 10 set /a d = %1 %% 10 call :sum_digits_pow %div% set /a m = "pows_%d%" + %ERRORLEVEL% exit /b %m% :pow setlocal set /a p = 1 for /L %%e in (1, 1, %2) do set /a p *= %1 exit /b %p%