自己测了好几组数据都跑对了啊
#include <cstdio>
#include <cstring>
#define N 105
using namespace std;
int t;
int n, m;
int a[N], b[N], c[N];
int l_a, l_b;
int tot;
int x;
void make_a(int n) {
l_a = 0;
memset(a, 0, sizeof(a));
while(n) {
a[++l_a] = n % 10;
n /= 10;
}
}
void make_b(int n) {
l_b = 0;
memset(b, 0, sizeof(b));
while(n) {
b[++l_b] = n % 10;
n /= 10;
}
}
void multiplication() {
memset(c, 0, sizeof(c));
for(int i = 1; i <= l_a; ++i) {
x = 0;
for(int j = 1; j <= l_b; ++j) {
c[i + j - 1] += a[i] * b[j] + x;
x = c[i + j - 1] / 10;
c[i + j - 1] %= 10;
}
c[i + l_b] = x;
}
l_a += l_b;
while(c[l_a] == 0 && l_a > 1)
--l_a;
for(int i = 1; i <= l_a; ++i)
a[i] = c[i];
}
int main() {
scanf("%d", &t);
while(t-- && scanf("%d%d", &n, &m)) {
make_a(1);
for(int i = 1; i <= n; ++i) {
make_b(i);
multiplication();
}
tot = 0;
for(int i = 1; i <= l_a; ++i)
if(a[i] == m)
++tot;
printf("%d\n", tot);
}
return 0;
}