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 Go (1.6) (judge verdict: Accepted)

package main
import (
  "container/list"
  "fmt"
)
func main() {
  var k int
  fmt.Scan(&k)
  var d []int = make([]int,k)
  var v []bool = make([]bool,k)
  for i:=0;i<k;i++ { d[i] = 2147483646 }
  d[1] = 0
  v[1] = true
  deque := list.New()
  deque.PushFront(1)
  for deque.Len() > 0 {
    n,_ := deque.Remove(deque.Front()).(int)
    var a,b int = (10*n)%k,(n+1)%k
    if !v[a] {
      v[a] = true
      d[a] = min(d[a],d[n])
      deque.PushFront(a)
    } else {
      if d[a] > d[n] {
        d[a] = d[n]
        deque.PushFront(a)
      }
    }
    if !v[b] {
      v[b] = true
      d[b] = min(d[b],d[n]+1)
      deque.PushBack(b)
    }
  }
  fmt.Print(d[0]+1)
}
func min(n,m int) int {
  if n < m { return n }
  return m
}