求 n!中某个数码出现的次数。
输入格式第一行为 t(t≤10),表示数据组数。接下来 t 行,每行一个正整数 n(n≤1000) 和数码 a。
输出格式对于每组数据,输出一个整数,表示 n! 中 a 出现的次数。
输入输出样例输入:
2 5 2 7 0
输出:
1 2
传送门:阶乘数码 - 洛谷
c++需要考虑精度问题,java提供BigInt类,python可以直接算。
主要注意对读入的处理,input()读入一行字符串,可以用split(' ')做分割,存入列表中。
读入处理代码如下:
L=input().split(' ')
以样列第一行为例,读入后L=['5','2'] (注意是字符串形式)
下面转化为int类型就可以了,本题中阶乘可以直接用factorial函数计算。
代码(python):
from math import *
t=int(input())
for i in range(0,t):
l=input().split(' ')
n=factorial(int(l[0]))
m=int(l[1])
s=0
while n:
if n%10==m:
s+=1
n//=10
print(s)
c++高精度版本:
#includeusing namespace std; int main() { int t; cin>>t; while(t--){ int n,a,cnt=0; cin>>n>>a; vector f; f.push_back(1); for(int i=2;i<=n;++i){ int c=0; for(int j=0;j 最后附上math库比较常用函数:
函数 说明 exp(x) e^x fabs(x) |x| factorial(x) x! log(x,y) y为底x的对数 log(x) e为底x的对数 log10(x) 10为底x的对数 pow(x,y) x^y sqrt(x) √x



