Galaxy6 @ 2021-07-29 20:09:07
#include<bits/stdc++.h>
#define maxn 1000
using namespace std;
int t;
vector<int>v;
struct bigint
{
int len,a[maxn];
bigint(int x=0)
{
memset(a,0,sizeof(a));
for(len=1;x;len++)
{
a[len]=x%10;
x/=10;
}
len--;
}
int &operator[](int i)
{
return a[i];
}
void flatten(int L)//展开并去除前导零
{
len=L;
for(int i=1;i<=len;i++)
{
a[i+1]+=a[i]/10;
a[i]%=10;
}
for(int i=len;i>0;i--)
{
if(a[i]==0) len--;
else break;
}
}
void print()
{
for(int i=len;i>0;i--) printf("%d",a[i]);
printf("\n");
}
};
bigint operator*(bigint b1,bigint b2)
{
bigint c;
for(int i=1;i<=b1.len;i++)
for(int j=1;j<=b2.len;j++)
c[i+j-1]+=b1[i]*b2[j];
c.flatten(b1.len+b2.len);
return c;
}
int func(int n,int a)
{
bigint b(n);
for(int i=n-1;i>0;i--)
{
bigint temp(i);
b=b*temp;
}
//b.print();
//cout<<b.len<<endl;
int cnt=0;
for(int i=1;i<=b.len;i++)
{
if(b[i]==a) cnt++;
}
return cnt;
}
int main()
{
scanf("%d",&t);
for(int i=1;i<=t;i++)
{
int n,a;
scanf("%d%d",&n,&a);
int ans=func(n,a);
v.push_back(ans);
}
for(int i=0;i<v.size();i++) printf("%d\n",v[i]);
return 0;
}