Problem:
Score : 700 points

Problem Statement

Find the smallest possible sum of the digits in the decimal notation of a positive multiple of K.

Constraints

2 \leq K \leq 10^5

K is an integer.

Input

Input is given from Standard Input in the following format:

K

Output

Print the smallest possible sum of the digits in the decimal notation of a positive multiple of K.

Sample Input 1

6

Sample Output 1

3

12=6×2 yields the smallest sum.

Sample Input 2

41

Sample Output 2

5

11111=41×271 yields the smallest sum.

Sample Input 3

79992

Sample Output 3

36

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <cstdio>
#include <queue>

using namespace std;

queue<pair<int,int>> q;
bool vis[50][100005];

int main() {
    int x,i,sum,m;

    scanf("%d",&x);

    q.push({0,0});
    while (!q.empty()) {
        sum = q.front().first;
        m = q.front().second;
        q.pop();

        if (vis[sum][m])
            i = 0;
        else
            i = 1;

        while (i < 10) {
            if (sum + i <= 45 && !vis[sum + i][(m * 10) % x + i]) {
                vis[sum + i][(m * 10) % x + i] = true;
                q.push({sum + i,(m * 10) % x + i});
            }

            i++;
        }
    }

    for (i = 0;i < 50;i++) {
        if (vis[i][0])
            break;
    }

    printf("%d\n",i);

    return 0;
}