这个题用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 ans
def 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 flag
def 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