洛谷P1591阶乘数码
P1591 阶乘数码
题目描述
求 n ! n! n! 中某个数码出现的次数。
输入格式
第一行为 t ( t ≤ 10 ) t(t \leq 10) t(t≤10),表示数据组数。接下来 t t t 行,每行一个正整数 n ( n ≤ 1000 ) n(n \leq 1000) n(n≤1000) 和数码 a a a。
输出格式
对于每组数据,输出一个整数,表示 n ! n! n! 中 a a a 出现的次数。
输入输出样例 #1
输入 #1
2
5 2
7 0
输出 #1
1
2
#include<cstdio>
#include<vector>
using namespace std;
int main()
{int m;int n,s;scanf("%d",&m);for(int i=1;i<=m;++i){scanf("%d%d",&n,&s);vector<int>num = {1};int cnt=0;if(n==0 ||n==1) num.push_back(1);else{for(int i=2;i<=n;++i){int carry=0;for(int j=0;j<num.size();++j){int product=num[j]*i+carry;num[j]=product%10;carry=product/10;}while(carry){num.push_back(carry%10);carry/=10;}}for(int i=0;i<num.size();++i)if(num[i]==s) cnt++;printf("%d\n",cnt);}}return 0;
}