这个题用python写,全部超时
我们为了得到1000!的位数,可以通过如下计算:
我们不妨设1000!的位数为k位,我们可以知道10^(k-1)< 1000!< 10 ^(k),两边取log10,可以计算出k的范围
import math#计算位数 大概2600位def count(n): ans=0 for i in range(1,n+1): ans+=math.log(i,10) return ansdef highMult(n,a): ans=[0]*2600 ans[0]=1 for i in range(1,n+1): ans=mult(ans,i) length=2599 while ans[length]==0: length-=1 flag=0 for an in ans[0:length+1]: if an==a: flag+=1 return flagdef mult(ans,i): num=[] result=[0]*2600 while i>0: temp=i%10 num.append(temp) i//=10 for i in range(2570): for j in range(len(num)): result[i+j]+=ans[i]*num[j] result[i+j+1]+=result[i+j]//10 result[i+j]=result[i+j]%10 return result.copy()if __name__=="__main__": t=int(input()) while t>0: n,a=map(int,input().split()) print(highMult(n,a)) t-=1