B. Nezzar and Lucky Number
题意:
- 规定数字中某一位有d就把这个数字称为幸运数字。现给定一个数组a[n]和一个数字d,问该数组中的每一个数是否等于幸运数字之和。
思路:
- 对于任意的a,如果a大于等于10d,一定能拆成(n10+d)+md的形式,一定有解;对于小于10d的数,如果能拆成n10+md的形式那么是有解的,否则无解。
代码:
#include"bits/stdc++.h"
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int q,d;
cin>>q>>d;
int a;
for(int i=0;i<q;i++){
cin>>a;
if(a>10*d) cout<<"YES"<<endl;//如果 a>d*10 即a可以拆成m*10+d+(n-1)*d 的形式
//注意,这里可以是两部分, m*10+d为一个数字, (n-1)*d为另一个数字
else{
int b=0;
for(int j=1;j<=10;j++)//循环去寻找d从1×到10可能会出现的个位数,如果个位数不同,直接输出no
{
int z=(j*d)%10;
if(z==a%10)
{
if(j*d==a)cout<<"YES"<<endl;
else if(a-j*d>=10)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
b=1;//更新b的值
break;
}
}
if(!b)cout<<"NO"<<endl;
}
}
}
}