#!/usr/bin/python #invlog by Marion McCoskey from operator import mod, sub radlst=[5, 11, 13, 29, 53, 59, 67, \ 83, 107, 139, 149, 163, 173, 179, \ 227, 269, 293, 317, 347, 373, 389, \ 419, 443, 467, 509, 557, 563, 587, \ 619, 653, 659, 709, 773, 787, 797, \ 853, 907, 1019, 1091, 1109, 1187, 1213, \ 1229, 1283, 1307, 1373, 1493, 1499, 1523, \ 1571, 1619, 1637, 1733, 1867, 1907, 1949, \ 1987, 1997, 2027, 2083, 2099, 2293, 2309, \ 2339, 2459, 2467, 2477, 2579, 2659, 2677, \ 2683, 2693, 2803, 2819, 2837, 2909, 2957, \ 2963, 3019, 3203, 3253, 3347, 3371, 3413, \ 3467, 3491, 3533, 3539, 3547, 3581, 3643, \ 3677, 3779, 3803, 3947, 3989, 4099, 4133, \ 4139, 4157, 4253, 4259, 4283, 4349, 4373, \ 4483, 4493, 4507, 4517, 4547, 4723, 4787, \ 4813, 5099, 5179, 5189, 5261, 5309, 5387, \ 5443, 5483, 5501, 5507, 5557, 5683, 5693, \ 5717, 5749, 5813, 5827, 5939, 6011, 6131, \ 6173, 6197, 6269, 6277, 6317, 6389, 6547, \ 6619, 6653, 6659, 6779, 6827, 6829, 6899, \ 6907, 7013, 7027, 7109, 7187, 7331, 7517, \ 7523, 7573, 7603, 7643, 7691, 7717, 7883, \ 7933, 7949, 8069, 8117, 8147, 8219, 8243, \ 8291, 8293, 8387, 8563, 8573, 8627, 8677, \ 8699, 8747, 8819, 8923, 8963, 9059, 9173, \ 9221, 9227, 9371, 9467, 9533, 9539, 9587] def eea(a,b): v1 = [a,1,0] v2 = [b,0,1] while v2[0]<>0: p = v1[0]//v2[0] v2, v1 = map(sub,v1,[p*vi for vi in v2]), v2 return v1 def minv(m,k): v = eea(m,k) if v[1]>=0: return v[1] else: return k+v[1] def mdiv(dor, dend, rad): inv=minv(dend, rad) return mod(inv*dor, rad) def duinvs(): invs=[] lim=len(rads) ind=0 while ind0: rx=ar1%ar0 ar1=ar0 ar0=rx return ar1 def ducons(): mxm=1 mxms=[] lcms=[] lcm=1 logss=[] lrads=[] linvs=[] rads=[] for ind in range(lim+1): rad=radlst[ind] rads.append(rad) mxms.append(mxm) lcms.append(lcm) mxm*=rad rad1=rad-1 com=euc(lcm, rad1) lrad=(rad1)/com lrads.append(lrad) lcm*=lrad logs=[0]*rad tot=1 for ind in range(1, rad): logs[tot]=ind tot<<=1 if tot>rad: tot-=rad logss.append(logs) return (rads[:lim], mxms[:lim], lcms[:lim], logss[:lim], lrads[:lim], mxms[-1], lcms[-1]) def res2dec(ires): lim=len(ires) tot=ires[0] ind=1 while ind