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 <bits/stdc++.h>
using namespace std;
#define ll long long

int main() {
    int K;
    cin >> K;
    vector<int> min(K, K);
    min[1] = 1;
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
    pq.push({1, 1});
    while(!pq.empty()) {
        int sum = pq.top().first;
        int now = pq.top().second;
        if (now == 0) break;
        pq.pop();
        if (sum < min[now*10%K]) {
            pq.push({sum, now*10%K});
            min[now*10%K] = sum;
        }
        if (sum + 1 < min[(now+1)%K]) {
            pq.push({sum+1, (now+1)%K});
            min[(now+1)%K] = sum+1;
        }
        
    }
    cout << min[0] << endl;
    
    return 0;
}