rt
code:
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 3000;
struct Bigint {
int len, a[MAXN];//len->length, a[MAXN]->values
Bigint(int x = 0) {
memset(a, 0, sizeof(a));
for (len = 0; x; len++) {
a[len] = x % 10, x /= 10;
}
}
int &operator[](int i) {
return a[i];
}
void flatten(int L) {
for (int i = 0; i < L; i++) {
a[i + 1] += a[i] / 10, a[i] %= 10;
}
len = L;
for (; !a[len];) {
len--;
}
}
void print(const char* s = "") {// s 用作调试
for (int i = max(len - 1, 0); i >= 0; i--) {
printf("%d%s", a[i], s);
}
}
};
Bigint operator*(Bigint a, int b) {
Bigint c;
int len = a.len;
for (int i = 0; i < len; i++) {
c[i] = a[i] * b;
}
c.flatten(len + 11);
return c;
}
int main() {
int t;
cin >> t;
while(t--) {
int n, a;
cin >> n >> a;
Bigint fac = 1;
// fac.print("==fac\n");
for(int i = 2; i <= n; i++) {
fac = fac * i;
}
int cnt = 0;
for(int i = 0; i < fac.len; i++) {
if(fac[i] == a) {
cnt++;
}
}
cout << cnt << endl;
}
return 0;
}