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;
int i,j,k,l,s,n,m,ans,f[55][100005],q[55];
inline void up(int &x,int y) {
    if (x==-1||x==0) x=y;
    else x=min(x,y);
}
int main() {
    scanf("%d",&n);
    int x=n;
    while (x) s+=x%10,x/=10;
    q[0]=1;
    ans=s;
    //ans=100;
    memset(f,-1,sizeof(f));
    f[0][0]=0;
    for (i=1;i<=max(s,6);i++) q[i]=q[i-1]*10%n;
    for (i=1;i<=max(s,6);i++)
    for (j=0;j<n;j++) {
        if (f[i-1][j]==-1) continue;
        for (k=0;k<=9;k++) up(f[i][(j+k*q[i])%n],f[i-1][j]+k);
        if (f[i][0]>0) ans=min(ans,f[i][0]);
    }
    printf("%d\n",ans);
}