这次蓝桥杯对于acm学数学的太友好了
emmm 然而还是菜啊
我和填空最后一题死磕了一个小时 (太蠢了)没有Python写Java大数写到自闭
题目大意:
n=p*q
p,q为素数
d与(p-1)*(q-1)互素
(d*e)%((p-1)*(q-1))=1
c=x^e%n
x=c^d%n
给定d,c,n
求x
素数筛可以求出p,q 用欧几里得验证是否满足互素条件,快速幂直接乘会爆longlong,所以要用快速乘+快速幂
#Python 大法好
p=891234941
q=1123984201
n=1001733993063167141
c=20190324
d=212353
for i in range(1,500000): #枚举因子 d*e%((p-1)*(q-1))=1 (((q-1)*(p-1))*yz+1) %d =0
if(((p-1)*(q-1)*i+1)%d==0):
e=((p-1)*(q-1)*i+1)//212353
print(((p-1)*(q-1)*i+1)//d)
break
def quick_mod(a,b,c):
a=a%c
ans=1
while b!=0:
if b&1:
ans=(ans*a)%c
b>>=1
a=(a*a)%c
return ans
x=quick_mod(c,e,n) #x=c^e%n 579706994112328949
print(x)
print(quick_mod(x,d,n)) #c=x^d%n
为什么我的考场没有Python 啊啊啊o(╥﹏╥)o