知道的越多,不知道的越多(微信:Y17744650906)
点赞再看,养成习惯
P1591 阶乘数码
**题目描述** 求 n!n! 中某个数码出现的次数。 **输入格式** 第一行为 t(t \leq 10)t(t≤10),表示数据组数。接下来 tt 行,每行一个正整数 n(n \leq 1000)n(n≤1000) 和数码 aa。 **输出格式** 对于每组数据,输出一个整数,表示 n!n! 中 aa 出现的次数。
#include<bits/stdc++.h>
using namespace std;
int m[10000008];
void JC(int k){
int i,j;
for(i=1;i<m[0];i++){
m[i] *= k;
}
for(i=1;i<m[0];i++){
if(m[i] > 9){
m[i + 1] += m[i] / 10;
m[i] %= 10;
}
}
while(m[m[0]]){
m[m[0]+1] += m[m[0]] / 10;
m[m[0]] %= 10;
m[0]++;
}
}
int main(){
int n,t,a,i,j;
cin>>t;
while(t--){
cin>>n>>a;
memset(m,0,sizeof(m));
m[0] = m[1] = 1;
int cnt = 0;
for(i=1;i<=n;i++){
JC(i);
}
for(i=1;i<m[0];i++){
if(m[i] == a){
cnt ++;
}
}
cout<<cnt<<endl;
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)