P1591 阶乘数码
题目描述
求n!中某个数码出现的次数。
输入输出格式
输入格式:
第一行为t(≤10),表示数据组数。接下来t行,每行一个正整数n(≤1000)和数码a。
输出格式:
对于每组数据,输出一个整数,表示n!中a出现的次数。
输入输出样例
输入样例#1:
复制
2 5 2 7 0
输出样例#1:
复制
1 2
高精乘
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 1300000 #define mod 10007 using namespace std; int t,l,n,x,m,a[N],ans; int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f; } int main() { t=read(); while(t--) { n=read(),x=read(); memset(a,0,sizeof(a)); l=1,a[1]=1,ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=l;j++) a[j]*=i; for(int j=1;j<=l;j++) { if(a[j]>9&&j+1>=l) l++; a[j+1]+=a[j]/10,a[j]%=10; } } while(a[l]==0) l--; for(int i=1;i<=l;i++) if(a[i]==x) ans++; printf("%d\n",ans); } return 0; }