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: Time Limit Exceeded)

#include <iostream>
#include <bitset>
using namespace std;

constexpr int MAX_K = 100'000;

int main() {
    int k;
    cin >> k;
    while (k % 2 == 0) k /= 2;
    while (k % 5 == 0) k /= 5;
    if (k == 1) {
        puts("1");
        return 0;
    }
    bitset<MAX_K> as;
    for (int i = 0; i < k; i++) {
        as.set(i);
    }
    bitset<MAX_K> bs;
    for (int i = 0, m = 1; !(m == 1 && i != 0); i++, m = (m * 10) % k) {
        bs[m] = true;
    }
    int ans;
    bitset<MAX_K> cs;
    cs.set(0);
    auto ds = bs;
    ds.set(0);
    for (ans = 2; !ds[k - 1]; ans++) {
        auto es = cs ^ ds;
        for (int j = 0; j < k; j++) {
            if (es[j]) {
                // printf("%d\n", j);
                // fflush(stdout);
                cs |= (bs<<j) | (bs>>(k - j));
            }
        }
        cs &= as;
        swap(cs, ds);
    }
    printf("%d\n", ans);
    return 0;
}