#include<string.h>
#include <stdio.h>
struct Num
{
int dig;
char n[1024];
};
int n, m, cnt;
Num num[367];
Num mul(Num r, int x)
{
Num numx=r;
int a, b, i;
int c=0;
for(i=0;i<numx.dig;i++)
{
a=(int)(numx.n[i]);
b=a*x+c;
if(b>=10)
{
c=b/10;
b%=10;
}
else c=0;
numx.n[i]=(char)(b);
}
if(c>0)
{
numx.n[numx.dig]=char(c);
numx.dig++;
}
return numx;
}
Num add(Num num1, Num num2)
{
Num numx=num1;
numx.dig=num1.dig>num2.dig?num1.dig:num2.dig;
int a, b, i;
int c=0;
for(i=0;i<numx.dig;i++)
{
a=(int)(numx.n[i]);
b=a+(int)num2.n[i]+c;
if(b>=10)
{
c=b/10;
b%=10;
}
else c=0;
numx.n[i]=(char)(b);
}
if(c>0)
{
numx.n[numx.dig]=char(c);
numx.dig++;
}
return numx;
}
void cal()
{
int i;
for(i=0;i<num[n].dig;i++)
{
if(num[n].n[i]==char(m))
cnt++;
}
}
int main()
{
int i,j;
num[0].n[0]=num[1].n[0]=1;
num[0].n[1]=num[1].n[1]=0;
num[0].dig=num[1].dig=1;
for(j=2;j<=366;j++)
{
num[j].dig=1;
memset(num[j].n,0,sizeof(num[j].n));
int x=j, dd=0;
while(x>0)
{
Num hNum=num[j-1];
for(i=0;i<dd;i++)
hNum=mul(hNum,10);
hNum=mul(hNum,x%10);
num[j]=add(num[j],hNum);
dd++;
x/=10;
}
}
/*
while(scanf("%d",&j))
{
for(i=num[j].dig-1;i>=0;i--)
printf("%d",num[j].n[i]);
printf("\n");
}*/
int t;
scanf("%d",&t);
while(t--)
{
cnt=0;
scanf("%d%d",&n,&m);
cal();
printf("%d\n",cnt);
}
return 0;
}
#include <stdio.h>
struct Num
{
int dig;
char n[1024];
};
int n, m, cnt;
Num num[367];
Num mul(Num r, int x)
{
Num numx=r;
int a, b, i;
int c=0;
for(i=0;i<numx.dig;i++)
{
a=(int)(numx.n[i]);
b=a*x+c;
if(b>=10)
{
c=b/10;
b%=10;
}
else c=0;
numx.n[i]=(char)(b);
}
if(c>0)
{
numx.n[numx.dig]=char(c);
numx.dig++;
}
return numx;
}
Num add(Num num1, Num num2)
{
Num numx=num1;
numx.dig=num1.dig>num2.dig?num1.dig:num2.dig;
int a, b, i;
int c=0;
for(i=0;i<numx.dig;i++)
{
a=(int)(numx.n[i]);
b=a+(int)num2.n[i]+c;
if(b>=10)
{
c=b/10;
b%=10;
}
else c=0;
numx.n[i]=(char)(b);
}
if(c>0)
{
numx.n[numx.dig]=char(c);
numx.dig++;
}
return numx;
}
void cal()
{
int i;
for(i=0;i<num[n].dig;i++)
{
if(num[n].n[i]==char(m))
cnt++;
}
}
int main()
{
int i,j;
num[0].n[0]=num[1].n[0]=1;
num[0].n[1]=num[1].n[1]=0;
num[0].dig=num[1].dig=1;
for(j=2;j<=366;j++)
{
num[j].dig=1;
memset(num[j].n,0,sizeof(num[j].n));
int x=j, dd=0;
while(x>0)
{
Num hNum=num[j-1];
for(i=0;i<dd;i++)
hNum=mul(hNum,10);
hNum=mul(hNum,x%10);
num[j]=add(num[j],hNum);
dd++;
x/=10;
}
}
/*
while(scanf("%d",&j))
{
for(i=num[j].dig-1;i>=0;i--)
printf("%d",num[j].n[i]);
printf("\n");
}*/
int t;
scanf("%d",&t);
while(t--)
{
cnt=0;
scanf("%d%d",&n,&m);
cal();
printf("%d\n",cnt);
}
return 0;
}