洛谷题单指南-模拟和高精度-P1591 阶乘数码
原题链接:https://www.luogu.com.cn/problem/P1591
题意解读:此题核心就是通过高精度*低精度计算阶乘,然后统计数码个数即可,直接给出代码。
100分代码:
#include <bits/stdc++.h>
using namespace std;
vector<int> mul(vector<int> &a, int b)
{
vector<int> result;
int t = 0;
for(int i = 0; i < a.size(); i++)
{
t += a[i] * b;
result.push_back(t % 10);
t /= 10;
}
while(t)
{
result.push_back(t % 10);
t /= 10;
}
return result;
}
int fac(int n, int a)
{
vector<int> ans(1, 1);
for(int i = 1; i <= n; i++)
{
ans = mul(ans, i);
}
int cnt = 0;
for(int i = 0; i < ans.size(); i++)
{
if(ans[i] == a) cnt++;
}
return cnt;
}
int main()
{
int t, n, a;
cin >> t;
for(int i = 1; i <= t; i++)
{
cin >> n >> a;
cout << fac(n, a) << endl;
}
return 0;
}