洛谷 P1591 阶乘数码-普及-
P1591 阶乘数码
题目描述
求 n!n!n! 中某个数码出现的次数。
输入格式
第一行为 t(t≤10)t(t \leq 10)t(t≤10),表示数据组数。接下来 ttt 行,每行一个正整数 n(n≤1000)n(n \leq 1000)n(n≤1000) 和数码 aaa。
输出格式
对于每组数据,输出一个整数,表示 n!n!n! 中 aaa 出现的次数。
输入输出样例 #1
输入 #1
2
5 2
7 0
输出 #1
1
2
solution
数据量很小,直接暴力即可
代码
#include <sstream>
#include "iostream"
#include "cmath"
#include "algorithm"
#include "cstring"
#include "unordered_set"
#include "deque"
#include "stack"
#include "queue"
#include "vector"
#include "unordered_map"using namespace std;const int N = 1e3 + 1;int a[N][10];int res[3000];void mul(int n) {int s = 0;for (int i = 0; i < 2999; i++) {res[i] *= n;res[i] += s;s = res[i] / 10;res[i] %= 10;}int i = 2999;while (res[i] == 0) i--;for (int j = i; j >= 0; j--) {a[n][res[j]]++;}
}int main() {int t, n, x;cin >> t;res[0] = 1;a[1][1] = 1;for (int i = 2; i <= 1000; i++) {mul(i);}for (int i = 0; i < t; i++) {cin >> n >> x;cout << a[n][x] << endl;}return 0;
}