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;
typedef long long ll;

struct edge {
  int to, cost;
  edge() {}
  edge(int t, int c) : to(t), cost(c) {}
};

vector<edge> G[100010];
int d[100010];

int main() {
  int K;
  cin >> K;

  for (int i = 0; i < K; i++) {
    G[i].push_back(edge((i + 1) % K, 1));
    if (i * 10 % K == i) continue;
    G[i].push_back(edge(i * 10 % K, 0));
  }

  deque<int> deq;
  fill(d, d + K, 1 << 30);
  d[1] = 0;
  deq.push_front(1);
  while (!deq.empty()) {
    int v = deq[0];
    deq.pop_front();
    for (int i = 0; i < G[v].size(); i++) {
      edge e = G[v][i];
      if (d[e.to] <= d[v] + e.cost) continue;
      d[e.to] = d[v] + e.cost;
      if (e.cost == 0) {
        deq.push_front(e.to);
      } else {
        deq.push_back(e.to);
      }
    }
  }
  cout << d[0] + 1 << endl;

  return 0;
}