#import gmpy2
'''
Given the following set of linear congruences:
x ≡ 2 mod 5
x ≡ 3 mod 11
x ≡ 5 mod 17
Find the integer a such that x ≡ a mod 935
'''
from Crypto.Util.number import *
def Chinese(n, N, a):
result = 0
for i in range(len(n)):
ai = a[i]
ni = n[i]
bi = N // ni
result += ai * bi * inverse(bi, ni)
return result % N
N=935
n=[5,11,17]
a=[2,3,5]
result=Chinese(n,N,a)
print(result)
I2ltcG9ydCAgZ21weTIKCicnJwpHaXZlbiB0aGUgZm9sbG93aW5nIHNldCBvZiBsaW5lYXIgY29uZ3J1ZW5jZXM6Cgp4IOKJoSAyIG1vZCA1Cngg4omhIDMgbW9kIDExCngg4omhIDUgbW9kIDE3CgpGaW5kIHRoZSBpbnRlZ2VyIGEgc3VjaCB0aGF0IHgg4omhIGEgbW9kIDkzNQonJycKCmZyb20gQ3J5cHRvLlV0aWwubnVtYmVyIGltcG9ydCAqCgpkZWYgQ2hpbmVzZShuLCBOLCBhKToKICAgIHJlc3VsdCA9IDAKCiAgICBmb3IgaSBpbiByYW5nZShsZW4obikpOgogICAgICAgIGFpID0gYVtpXQogICAgICAgIG5pID0gbltpXQogICAgICAgIGJpID0gTiAvLyBuaQoKICAgICAgICByZXN1bHQgKz0gYWkgKiBiaSAqIGludmVyc2UoYmksIG5pKQoKICAgIHJldHVybiByZXN1bHQgJSBOCgpOPTkzNQpuPVs1LDExLDE3XQphPVsyLDMsNV0KcmVzdWx0PUNoaW5lc2UobixOLGEpCnByaW50KHJlc3VsdCkK