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 <iostream>
#include <deque>
using namespace std;

const int inf = 1 << 30;

int dist[100010][10];

int main() {
  int K;
  cin >> K;
  for (int m = 0; m < K; m++) {
    for (int t = 0; t < 10; t++) {
      dist[m][t] = inf;
    }
  }
  deque<pair<int, int>> deq;
  deq.emplace_back(1, 1);
  dist[1][1] = 1;
  while (!deq.empty()) {
    auto v = deq.front(); deq.pop_front();
    int m = v.first, t = v.second;
    int d = dist[m][t];
    {
      int mm = (m * 10) % K, tt = 0;
      int dd = d;  
      if (dd < dist[mm][tt]) {
        dist[mm][tt] = dd;
        deq.emplace_front(mm ,tt);
      }
    }
    if (t < 9) {
      int mm = (m + 1) % K, tt = t + 1;
      int dd = d + 1;
      if (dd < dist[mm][tt]) {
        dist[mm][tt] = dd;
        deq.emplace_back(mm, tt);
      }
    }
  }
  int res = inf;
  for (int t = 0; t < 10; t++) {
    res = min(res, dist[0][t]);
  }
  cout << res << endl;
  return 0;
}