Codeforces Round #698 (Div. 2) B. Nezzar and Lucky Number

B. Nezzar and Lucky Number

点击题目可传送至原题

今天状态太差了,唉

题面

Nezzar's favorite digit among (1,…,9) is (d). He calls a positive integer lucky if (d) occurs at least once in its decimal representation.

Given (q) integers (a_1,a_2,…,a_q), for each $1≤i≤q$1 Nezzar would like to know if (a_1) can be equal to a sum of several (one or more) lucky numbers.

Input

The first line contains a single integer (t (1≤t≤9)) — the number of test cases.

The first line of each test case contains two integers (q) and (d (1≤q≤104, 1≤d≤9)).

The second line of each test case contains (q) integers (a_1,a_2,…,a_q (1≤ai≤109)).

Output

For each integer in each test case, print "YES" in a single line if (a_i) can be equal to a sum of lucky numbers. Otherwise, print "NO".

You can print letters in any case (upper or lower).

Example

input

2
3 7
24 25 27
10 7
51 52 53 54 55 56 57 58 59 60

output

YES
NO
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
NO

Note

In the first test case, 24=17+724=17+7, 2727 itself is a lucky number, 2525 cannot be equal to a sum of lucky numbers.

题目分析

题意:给你一个从1到10的数字d,再给你一组数。让你这组数里的每一个数字能否拆分为含有d的数字相加的形式

分析

  • 当判断数字大于(10 * d)时,必定能满足要求。

    当数字大于(10 * d)的时候,你总能让拆分的两个数字的个位或百位或千位出现d。这个规律可以自行推导或者打表得到。

  • 当判断数字小于(10 * d)时,如果一个数字在减去n * 10之后能被d整除,那么必定能满足要求。

    小于(10 * d)时,一个满足条件的数字通常由(d + (10 + d) + (20 + d) ...)组成。说明满足条件的数字满足 $ m * 10 + n *d $ 的构成。所以当(m = 0)的时候,剩下的数字能被d整除,那么就满足要求。

AC代码

#include <bits/stdc++.h>
using namespace std;
#define io ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)

const int N = 100100;
int q[N];
int t, n, m;
int d;

inline void solve() {
    cin >> n >> d;
    for (int i = 0; i < n; i++) {
        cin >> q[i];
        if (q[i] > d * 10)
            cout << "YES" << endl;
        else {
            bool j = 0;
            while (q[i] > 0) {
                if (q[i] % d == 0) {
                    j = 1;
                    break;
                }
                q[i] -= 10;
            }
            if (j)
                cout << "YES" << endl;
            else
                cout << "NO" << endl;
        }
    }
}

int main() {
    io;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
原文地址:https://www.cnblogs.com/FrankOu/p/14342750.html