当前位置:文档之家› 第三届全国高校数学密码挑战赛赛题一全国三等奖代码(2018年)

第三届全国高校数学密码挑战赛赛题一全国三等奖代码(2018年)


if i<=23: else:
print g,i break
if (i-66000)%100000==0 : #os.system('>> '+'a'+str(i/1000.0)+'k.txt') fp = open('bc_'+str(i/1000.0)+'k.txt','w') fp.write(str(g[0])+'\n') fp.write(str(g[1])+'\n') fp.write(str((time()-t0)/3600)+' hours\n')
w = cos(2*i*pi/n)+1j*sin(2*i*pi/n) w = 1/w if inverse else w y.append(yi) yi= y1[i%(n/2)] + w * y2[i%(n/2)]
def fft_mul(f1,f2): n=max(len(f1),len(f2)) while n>k: n=k<<1 k<<=1 k=1
f,g=[g[0]<<1,g[1]<<1],[f[0]+d*g[0],f[1]+d*g[1]] #f[1]=phi2([f[1],modl+f[1],f[1]-modl]) #f[0]=phi2([f[0],modl+f[0],f[0]-modl])
#g[0]=phi2([g[0],modl+g[0],g[0]-modl])
# -*- coding:utf-8 -*from math import * from time import * import os
import matplotlib.pyplot as plt t0=time()
def fft(fx,inverse=False): n=len(fx) if n==1: fx1=[]
flag = not ((alpha*(g[1]-1)+alpha)-g[0])&(modl-1) f[0]<<=1 f[1]<<=1 #f[0]=phi2([f[0],modl+f[0],f[0]-modl]) elif phi(g)<phi(f): #f[1]=phi2([f[1],modl+f[1],f[1]-modl]) d=dou_f(f,g,modl)
else:
#g[1]=phi2([g[1],modl+g[1],g[1]-modl]) d=dou_f(g,f,modl)
f,g=[f[0]<<1,f[1]<<1],[g[0]+d*f[0],g[1]+d*f[1]] #f[0]=phi2([f[0],modl+f[0],f[0]-modl]) #f[1]=phi2([f[1],modl+f[1],f[1]-modl]) #g[0]=phi2([g[0],modl+g[0],g[0]-modl]) i+=1 #g[1]=phi2([g[1],modl+g[1],g[1]-modl])
return y
f1 = f1 + (n-len(f1))*[0]
f2 = f2 + (n-len(f2))*[0]
y1 = fft(f1)
y2 = fft(f2) y=[y1*y2 for y1,y2 in zip(y1,y2)] fx = fft(y,inverse=True) fx = [i/len(fx) for i in fx] return fx v=0
return [fx[0]]
fx2=[] for i in range(0,n,2): fx1.append(fx[i]) fx2.append(fx[i+1]) y1 = fft(fx1,inverse = inverse) y=[]
y2 = fft(fx2,inverse = inverse)
for i in range(n):
def dou_f(f,g,mo):
for i in [l-2,l+2,r,r+2]:
min_d = phi([f[0]+i*g[0],f[1]+i*g[1]])
def j(alpha,g,modl): global tt global tm
return d
t2=time()
f1=alpha *g[1]-g[0] tt+=time()-t2 t2=time()
fp.write(str(phi(g))+'\n') fp.write(str(alpha)+'\n') fp.write(str(modl)+'\n') fp.write(str(f[1])+'\n') fp.close() fp.write(str(f[0])+'\n')
print i,'\t',(time()-t0)/3600#,tt/(time()-t0)*100,tm/(time()-t0)*100 print (alpha *g[1]-g[0])%modl #print 'p=',g[0] #print 'phi(p,q)=',phi([p,q])
#print 'q=',g[1]
FI.close()
def phi2(f):
for i in range(1,len(f)): v=i
if abs(f[i])<abs(f[v]):
def phi(f):
return f[v] return max(abs(f[0]),abs(f[1])) x0=(f[0]-f[1])/(g[1]-g[0]) x1=-sum(f)/sum(g) l=min(x0,x1) l=l-1+(l&1) d=l r=max(x0,x1) r=r-1+(r&1) min_d = phi([f[0]+l*g[0],f[1]+l*g[1]]) if phi([f[0]+i*g[0],f[1]+i*g[1]])<min_d: d=i
f=f1&modl reБайду номын сангаасurn f
tm+=time()-t2 FI = open('sequence.txt') a='' for l in FI: a=l i=2 alpha=2 f=[0,2] d=0 g=[2,1] modl = 1<<2 while i<len(a): if a[i]=='1': modl<<=1 if flag: alpha+=modl
相关主题