#include<string.h>
#include <stdio.h>
![](/Images/OutliningIndicators/None.gif)
struct Num
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](/Images/OutliningIndicators/ContractedBlock.gif) {
int dig;
char n[1024];
};
![](/Images/OutliningIndicators/None.gif)
int n, m, cnt;
Num num[367];
![](/Images/OutliningIndicators/None.gif)
Num mul(Num r, int x)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](/Images/OutliningIndicators/ContractedBlock.gif) {
Num numx=r;
![](/Images/OutliningIndicators/InBlock.gif)
int a, b, i;
int c=0;
for(i=0;i<numx.dig;i++)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
a=(int)(numx.n[i]);
b=a*x+c;
if(b>=10)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
c=b/10;
b%=10;
}
else c=0;
numx.n[i]=(char)(b);
}
if(c>0)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
numx.n[numx.dig]=char(c);
numx.dig++;
}
return numx;
}
Num add(Num num1, Num num2)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](/Images/OutliningIndicators/ContractedBlock.gif) {
![](/Images/OutliningIndicators/InBlock.gif)
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++)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
a=(int)(numx.n[i]);
b=a+(int)num2.n[i]+c;
if(b>=10)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
c=b/10;
b%=10;
}
else c=0;
numx.n[i]=(char)(b);
}
if(c>0)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
numx.n[numx.dig]=char(c);
numx.dig++;
}
return numx;
}
void cal()
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](/Images/OutliningIndicators/ContractedBlock.gif) {
int i;
for(i=0;i<num[n].dig;i++)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
if(num[n].n[i]==char(m))
cnt++;
}
}
![](/Images/OutliningIndicators/None.gif)
int main()
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](/Images/OutliningIndicators/ContractedBlock.gif) {
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++)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
num[j].dig=1;
memset(num[j].n,0,sizeof(num[j].n));
int x=j, dd=0;
while(x>0)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
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);
![](/Images/OutliningIndicators/InBlock.gif)
dd++;
x/=10;
}
}
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) /**//*
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--)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
cnt=0;
scanf("%d%d",&n,&m);
cal();
printf("%d\n",cnt);
}
return 0;
}
![](/Images/OutliningIndicators/None.gif)
|
|
|