from math import gcd, comb
# https://[Log in to view URL]
# https://[Log in to view URL]
n = int(input())
k = int(input())
def totient(m):
    ans = 0
    for d in range(1, m + 1):
        if gcd(m, d) == 1:
            ans += 1
    return ans

def dirichlet_convolution(n, k):
    return sum(totient(d) * k**(n // d) for d in range(1, n + 1) if n % d == 0)

def bracelet(n, k):
    s =  (k + 1) *(k**(n//2))//2 if n % 2 == 0 else k**((n+1)//2)
    return (dirichlet_convolution(n, k) + n * s) // (2 * n)

def all_color_bracelets(n, k):
    s = bracelet(n, k)
    for j in reversed(range(1, k)):
        s += (-1)**j * comb(k, j) * bracelet(n, k - j)
    return s

print("res :", all_color_bracelets(24, 4))
# for n in range(1, 8):
#     print(' '.join(map(str, [dirichlet_convolution(n, k) for k in range(1, n + 1)])))
    
# for n in range(1, 8):
#     print(' '.join(map(str, [bracelet(n, k) for k in range(1, n + 1)])))

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: