This documentation is automatically generated by online-judge-tools/verification-helper
$x ^ 2 \equiv y \pmod P$ を満たす x を返します.
x = cipolla(y, P)
def cipolla(x, MOD):
if MOD == 2:
return x
elif x == 0:
return 0
elif pow(x, (MOD - 1) // 2, MOD) != 1:
return -1
y = 1
while pow((y * y - x) % MOD, (MOD - 1) // 2, MOD) == 1:
y += 1
base = (y * y - x) % MOD
def multi(a0, b0, a1, b1):
return (a0 * a1 + base * (b0 * b1 % MOD)) % MOD, (a0 * b1 + a1 * b0) % MOD
def pow_(a, b, n):
if n == 0:
return 1, 0
tmp = multi(a, b, a, b)
ret = pow_(tmp[0], tmp[1], n >> 1)
if n & 1:
ret = multi(ret[0], ret[1], a, b)
return ret
return pow_(y, 1, (MOD + 1) // 2)[0]
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.11.4/x64/lib/python3.11/site-packages/onlinejudge_verify/documentation/build.py", line 81, in _render_source_code_stat
bundled_code = language.bundle(
^^^^^^^^^^^^^^^^
File "/opt/hostedtoolcache/Python/3.11.4/x64/lib/python3.11/site-packages/onlinejudge_verify/languages/python.py", line 108, in bundle
raise NotImplementedError
NotImplementedError