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: Wrong Answer)

#include <bits/stdc++.h>
using namespace std;

const int MAX_N = (int)(1e5 + 5);
using pp = pair<int, int>;
bool vis[MAX_N];

int k;
deque<pp> dq;

int solve() {
  fill(vis, vis + MAX_N, false);

  dq.push_front(pp(1, 1));
  while (!dq.empty()) {
    pp p = dq.front(); dq.pop_front();
    int cur = p.first; int cnt = p.second;

    if (cur == 0) return cnt;

    int next = (cur + 1) % k;
    if (!vis[next]) {
      vis[next] = true;
      dq.push_back(pp(next, cnt + 1));
    }

    next = (cur * 10) % k;
    if (!vis[next]) {
      vis[next] = true;
      dq.push_front(pp(next, cnt));
    }
  }
}

int main(void) {
  // Here your code !
  scanf("%d", &k);

  int ans = solve();
  printf("%d\n", ans);

  return 0;
}