起因
//从大佬那抄的
#include<cstdio>
#include<algorithm>
#include<vector>
using std::vector;
using std::swap;
typedef long long ll;
const int N=1e6+10;
const ll P=998244353;
const ll G=3;
ll read(){
ll a=0;int op=1;char ch=getchar();
while(ch<'0'||'9'<ch){if(ch=='-')op=-1;ch=getchar();}
while('0'<=ch&&ch<='9'){a=(a<<3)+(a<<1)+(48^ch);ch=getchar();}
return a*op;
}
ll pow(ll a,ll n){
ll ret=1;
while(n){
if(n&1)ret=ret*a%P;
a=a*a%P;
n>>=1;
}
return ret;
}
void ntt(ll *a,int n,int op){
static ll* const pos=new ll[N];
static int last_n=-1;
if(last_n!=n){
last_n=n;
pos[0]=0;
for(int i=1;i<n;i++){
pos[i]=(pos[i>>1]>>1)|((i&1)*(n>>1));
}
}
for(int i=0;i<n;i++)if(i<pos[i])swap(a[i],a[pos[i]]);
ll A,B,w1,wi;
for(int l=1;l<n;l<<=1){
w1=pow(G,(P-1)/(l<<1));
if(op==-1)w1=pow(w1,P-2);
for(int i=0;i<n;i+=l<<1){
wi=1;
for(int j=0;j<l;j++,wi=wi*w1%P){
A=a[i+j];
B=a[i+j+l]*wi%P;
a[i+j]=(A+B)%P;
a[i+j+l]=(P+A-B)%P;
}
}
}
}
class Int{
private:
vector<ll>data;
Int(const vector<ll> data_):data(data_){
}
public:
Int(ll a=0){
do{
data.push_back(a%10);
a/=10;
}while(a);
}
int len()const{
return data.size();
}
ll get(int i)const{
return data[i];
}
Int operator*(const Int a_)const{
static ll* const a=new ll[N];
static ll* const b=new ll[N];
int n=1;
while(n<=(int)data.size()+(int)a_.data.size())n<<=1;
for(int i=0;i<(int)data.size();i++)a[i]=data[i];
for(int i=(int)data.size();i<n;i++)a[i]=0;
for(int i=0;i<(int)a_.data.size();i++)b[i]=a_.data[i];
for(int i=(int)a_.data.size();i<n;i++)b[i]=0;
ntt(a,n,1);ntt(b,n,1);
vector<ll>c(n,0);
for(int i=0;i<n;i++)c[i]=a[i]*b[i]%P;
ntt(c.data(),n,-1);
ll l=pow(n,P-2);
for(int i=0;i<n;i++)c[i]=c[i]*l%P;
for(int i=0;i+1<n;i++){
c[i+1]+=c[i]/10;
c[i]%=10;
}
while(!c.back())c.pop_back();
return c;
}
};
Int multiply(int begin,int end){
if(begin==end)return Int(begin);
if(begin==end-1)return Int(ll(begin)*end);
int mm=begin+(end-begin)/2;
return multiply(begin,mm)*multiply(mm+1,end);
}
void do_something(){
int n,a;
n=read();
a=read();
Int x=multiply(1,n);
int ans=0;
for(int i=0;i<x.len();i++)ans+=(x.get(i)==a);
printf("%d\n",ans);
}
int main(){
int n;
n=read();
for(int i=0;i<n;i++)do_something();
return 0;
}