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;

#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 maxn 200111

typedef long long ll;
typedef long double ld;

int k;
bool dp[21][40][100000];
int used[21][40][100000];
int cnt;

bool fun(int x, int sum, int ost){
	if(sum == 0 && ost == 0)
		return 1;

	if(x == 20){
		if(sum == 0 && ost == 0)
			return 1;
		return 0;
	}

	if(used[x][sum][ost] == cnt)
		return dp[x][sum][ost];

	bool &cur = dp[x][sum][ost];
	cur = 0;
	used[x][sum][ost] = cnt;
	for(int i = 0; i <= min(9, sum); i++){
		if(x == 0 && i == 0)
			continue;

		cur = max(cur, fun(x + 1, sum - i, (ost * 10 + i) % k));
		if(cur == 1)
			return cur;
	}
	return cur;
}

int main(){
	scanf("%d", &k);
	for(int i = 1; i < 40; i++){
		cnt++;
		if(fun(0, i, 0)){
			printf("%d\n", i);
			return 0;
		}
	}
	return 0;
}