def prob_succ(k,n):
B = tuples([-1,1],k)
U = tuples( (range(1, (n-1)/2 + 1) ) , k)
def dotprod(b,u):
sum = 0
for i in range(len(b)):
sum = sum + b[i]*u[i]
return mod(sum, 2*n)
def sqrt_sums(u):
C = [0 for i in range(2*n)]
for b in B:
C[dotprod(b,u)] = C[dotprod(b,u)] + 1
sum1 = 0
for z in range(2*n):
sum1 = sum1 + sqrt(C[z])
sum2 = 0
for z in range(n):
sum2 = sum2 + sqrt(C[z*2]) - sqrt(C[z*2 + 1])
return sum1*sum1 + sum2*sum2
sum = 0
for u in U:
sum = sum + sqrt_sums(u)
return sum / (2 * n * (n-1)^k)