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 pb push_back
#define mp make_pair
#define fi first
#define se second
#define INF (1LL << 55)
#define MOD (1000 * 1000 * 1000 + 7)
#define maxk 100111

typedef long long ll;
typedef long double ld;

int k;
int dp[maxk];
queue<int> q;

int main(){
	scanf("%d", &k);

	memset(dp, 0x3f3f, sizeof(dp));
	for(int i = 1; i <= 9; i++){
		q.push(i);
		dp[i] = i;
	}

	while(!q.empty()){
		int val = q.front();
		q.pop();

		for(int i = 0; i <= 9; i++){
			int v = (val * 10 + i) % k;
			if(dp[v] > dp[val] + i){
				dp[v] = dp[val] + i;
					q.push(v);
			}
		}	
	}

	printf("%d\n", dp[0]);
	return 0;
}