def inverse(L):
E=[1]+[0]*~-len(L)
F=[]
I=[]
i=f=1
while len(F)<len(L):
F.append(f)
L[i-1]/=f
f *= i
i += 1
for i in range(len(L)):
c = E[i]/L[0]
I.append(c*F[i])
for j in range(len(L)-i):
E[i+j] -= c*L[j]
return I
print(inverse([1,0,-1,0,1,0,-1,0]))
print(inverse([1,2,4,8,16,32,64]))
print(inverse([1,-1,0,0,0,0,0,0]))
ZGVmIGludmVyc2UoTCk6CglFPVsxXStbMF0qfi1sZW4oTCkKCUY9W10KCUk9W10KCQoJaT1mPTEKCXdoaWxlIGxlbihGKTxsZW4oTCk6CgkgICAgRi5hcHBlbmQoZikKCSAgICBMW2ktMV0vPWYKCSAgICBmICo9IGkKCSAgICBpICs9IDEKCQoJZm9yIGkgaW4gcmFuZ2UobGVuKEwpKToKCSAgICBjID0gRVtpXS9MWzBdCgkgICAgSS5hcHBlbmQoYypGW2ldKQoJICAgIGZvciBqIGluIHJhbmdlKGxlbihMKS1pKToKICAgICAgICAJRVtpK2pdIC09IGMqTFtqXQoJCglyZXR1cm4gSQoKcHJpbnQoaW52ZXJzZShbMSwwLC0xLDAsMSwwLC0xLDBdKSkKcHJpbnQoaW52ZXJzZShbMSwyLDQsOCwxNiwzMiw2NF0pKQpwcmludChpbnZlcnNlKFsxLC0xLDAsMCwwLDAsMCwwXSkp
[1.0, 0.0, 1.0, 0.0, 5.0, 0.0, 61.0, 0.0]
[1.0, -2.0, 4.0, -7.999999999999998, 15.999999999999986, -31.999999999999915, 63.99999999999945]
[1.0, 1.0, 2.0, 6.0, 24.0, 120.0, 720.0, 5040.0]