初始的文件,这个比较好想,但是超时
# kewei相等数.py
a=int(input())
while a!=0:
m,n,yushu=1,1,0
while a**n<1000:
n+=1
yushu=a**n%1000
# print(n)
# print(yushu)
m=n+1
if yushu==0:
print(m+n)
while a**m%1000!=yushu:
m+=1
if a**m%1000==yushu:
print(m+n)
break
a=int(input())
但是,有更好的算法可以改进速度
参考https://blog.csdn.net/LXQ1071717521/article/details/77913913
https://blog.csdn.net/chichoxian/article/details/18051481
于是我改进了自己的py文件,结果如下。
# kwei_gaijinsuanfa.py
def mantissa(k,m,n):
s=[(-1) for x in range(0,1000)]
while k**m<1000:
m=m+1
tm=(k**m)%1000
s[tm]=m
for i in range(m+1,1000):
tm=tm*(k%1000)%1000;
if(s[tm]!=-1):
return i+s[tm]
else:
s[tm]=i
while 1:
k=int(input())
if k==0:
break
a=mantissa(k,1,1)
print(a)