import numpy as np

n1,n2,n3 = 11,7,3
B = np.random.randint(100,200)
#d = n1 * B*B + n2 * B + n3
#d = n1 × B² + n2 × B + n3   (where B > max(n_i))



def decode_base(d, B):
    n3 = d % B
    n2 = (d // B) % B
    n1 = d // (B * B)
    return n1, n2, n3

c = np.random.randint(100,200)
d = np.random.randint(10,20)

while True:
    n1,n2,n3 = decode_base(d, B)
    B = np.roots([n1,n2,1-d])
    break
    d = n1 * B*B + n2 * B + 1        
    err = c - n1*n2*n3
    B += err
    print(np.sum(err**2))
