#698 B
思路:如果一个数大于幸运数字*10那么一定可以由这个幸运数字组成,如果小于d*10那么不清楚所以我们可以打个表把d*10以下可以由幸运数字组成的数枚举出来;
#include<stdio.h>
#include<string.h>
int ai[300010];
bool si[20][100];
void ins()
{
for(int d=1;d<=9;d++)
{
for(int j=1;j<=10;j++)
{
si[d][j*d]=1;
}
}
for(int d=1;d<=9;d++)
{
for(int j=1;j<=d;j++)
{
int the=j*10+d;
si[d][the]=1;
for(int k=1;k+the<=d*10;k++)
{
if(si[d][k])
{
si[d][k+the]=1;
}
}
}
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(si,0,sizeof(si));
int d,q;
scanf("%d%d",&q,&d);
ins();
for(int i=1;i<=q;i++)
{
int x;
scanf("%d",&x);
if(x>=d*10)printf("YES\n");
else
{
if(si[d][x])printf("YES\n");
else printf("NO\n");
}
}
}
return 0;
}