from sympy import *
from math import *

k, n = symbols("k n")
maxk = 10

exprs = {}
values = {}
def run(floor: bool):
    cache = {0: n}
    for k in range(1, maxk):
        expression = n ** (k + 1)
        for i in range(k):
            expression -= comb(k + 1, i) * cache[i] * (-1) ** (k-i)
        if floor:
            expression //= k+1
        else:
            expression /= k+1
        result = simplify(expression)
        cache[k] = result
        print(k)
        if floor:
            f = lambdify([n], expression)
            values[k] = int(f(99))
        else:
            exprs[k] = result
        #for i in range(5):
        #    a = 0
        #    for j in range(1,i+1):
        #        a += j**k
        #    print(i, f(i), a)
        #print()

run(True)
run(False)
for k in range(1, maxk):
    print(k, latex(exprs[k]), f"f(99)", values[k])
