太菜了
等差数列
def gcd(x,y):
if y>x:
x,y=y,x
if y==0:
return x
else:
return gcd(y,x%y)
n=int(input())
a=list(map(int,input().split()))
a.sort()
b=[]
for i in range(1,n):
b.append(a[i]-a[i-1])
b.sort()
if a[0]==a[-1]:
print(n)
else:
ans=gcd(b[0],b[1])
for i in range(1,n-1):
ans=gcd(ans,b[i])
print((a[-1]-a[0])//ans+1)
X的因子链
N=pow(2,20)+1
prime=[]
st=[False for i in range(N)]
pre=[-1 for i in range(N)]
def getprime():
for i in range(2,N):
if st[i]==False:
st[i]=True
prime.append(i)
pre[i]=i
for j in prime:
if i*j>=N:
break
st[i*j]=True
pre[i*j]=j
if i%j==0:
break
getprime()
def mul(x):
if x==1:
return 1
else:
return x*mul(x-1)
try:
while True:
n=int(input())
length=0
a=[0 for i in range(n+1)]
while n!=1:
length+=1
a[pre[n]]+=1
n//=pre[n]
ans=mul(length)
for i in a:
if i!=0:
ans//=mul(i)
print(length,ans)
except EOFError:
pass
五指山 (扩展欧几里得算法)
扩展欧几里得算法
学不会,直接背
def exgcd(a,b):
if b==0:
return 1,0,a
else:
x,y,q=exgcd(b,a%b)
x,y=y,(x-(a//b)*y)
return x,y,q
t=int(input())
for _ in range(t):
n,d,x,y=map(int,input().split())
a,b,gcd=exgcd(n,d)
if (y-x)%gcd:
print("Impossible")
else:
b*=(y-x)//gcd
n//=gcd
print(b%n)
最大比例
def gcd(x,y):
if y==0:
return x
else:
return gcd(y,x%y)
def gcd_sub(x,y):
if x<y:
x,y=y,x
if y==1:
return x
else:
return gcd_sub(y,x//y)
n=int(input())
a=list(map(int,input().split()))
a=list(set(a))
a.sort()
x=[]
y=[]
for i in range(1,len(a)):
d=gcd(a[0],a[i])
x.append(a[i]//d)
y.append(a[0]//d)
p=x[0]
q=y[0]
for i in range(1,len(x)):
p=gcd_sub(p,x[i])
q=gcd_sub(q,y[i])
print("{}/{}".format(p,q))