题目入口
题目描述
求 n!中某个数码出现的次数。
输入格式
第一行为 t(t≤10),表示数据组数。接下来 t 行,每行一个正整数 n(n≤1000) 和数码 a。
输出格式
对于每组数据,输出一个整数,表示 n! 中 a 出现的次数。
输入输出样例
输入 #1
2 5 2 7 0
输出 #1
1 2
一开始我的代码是:
def factorial(x):
if x==0:
return 1
else:
return x*factorial(x-1)
T=eval(input())
ans=[]
for i in range(T):
lst=list(input().split(' '))
n=eval(lst[0])
a=lst[1]
time=0
s=factorial(n)
t=str(s)
for j in t:
if a==j:
time+=1
ans.append(time)
for i in ans:
print(i)
这个代码在本地IDE上是可以过样例的,但是提交测评以后全部WA。
在洛谷在线IDE上测评发现输出是全零。
后来把
lst=list(input().split(' '))
改成
lst=list(input().split())
就可以通过了。原因是输入的数据是在Windows环境下生成的,换行符是'\r\n',而洛谷评测环境是Linux,换行符是'\n',因此在a的末尾多出一个'\r'。而如果采用默认参数,默认参数是以包括'\n\t\r'在内的所有空白符号作为分割符,a的末尾没有'\r',因此能通过。
AC代码:
def factorial(x):
if x==0:
return 1
else:
return x*factorial(x-1)
T=eval(input())
ans=[]
for i in range(T):
lst=list(input().split())
n=eval(lst[0])
a=lst[1]
time=0
s=factorial(n)
t=str(s)
for j in t:
if a==j:
time+=1
ans.append(time)
for i in ans:
print(i)