from math import isqrt
# [1, 2, -3] => f(1) = 3
# [1, -2, 3, 4, -5, 6, -7] => f(2) = 7
# [1, 2, -3] => f(3) = 3
# [-1, 2, 3, -4] => f(4) = 4
# [1, 2, 3, 4, -5, -6, -7, 8] => f(5) = 8
def solve(n):
triangular = lambda x: x *(x + 1) // 2
k = isqrt(2 * n)
l = isqrt(4 * n)
while 1:
Tk = triangular(k)
if Tk >= n and Tk % 2 == n % 2:
r = (Tk - n) // 2
rem = list(range(1, k + 1))
s = r
j = k
while s - j > 0:
rem[j - 1] *= - 1
s -= j
j -= 1
if s > 0:
rem[s - 1] *= -1
while triangular(l) - r < n:
l += 1
print(rem, sum(rem), l)
break
k += 1
for n in range(1, 10):
solve(n)
To embed this project on your website, copy the following code and paste it into your website's HTML: