fork download
  1.  
  2. package main
  3. import (
  4. "fmt"
  5. )
  6. func e(x uint64) string {
  7. if x == 0 {
  8. return ""
  9. }
  10. return e(x >> 1) + string((x & 1) + '0')
  11. }
  12. func main() {
  13. var n, x int
  14. var ok bool
  15. fmt.Scanf("%d", &n)
  16. for i := 0; i < n; i++ {
  17. fmt.Scanf("%d", &x)
  18. m := make(map[int]uint64)
  19. m[1 % x] = 1
  20. _, ok = m[10 % x]
  21. if !ok {
  22. m[10 % x] = 2
  23. }
  24. _, ok = m[11 % x]
  25. if !ok {
  26. m[11 % x] = 3
  27. }
  28. a := uint64(2)
  29. r := 10 % x
  30. _, ok = m[0]
  31. for !ok {
  32. a = a << 1
  33. r = (r * 10) % x
  34. mc := make(map[int]uint64)
  35. for k, v := range m {
  36. mc[k] = v
  37. }
  38. _, ok = m[r]
  39. if !ok {
  40. m[r] = a
  41. }
  42. if r == 0 {
  43. break
  44. }
  45. for k, v := range mc {
  46. nr := (r + k) % x
  47. _, ok = m[nr]
  48. if !ok {
  49. m[nr] = a + v
  50. if nr == 0 {
  51. break
  52. }
  53. }
  54. }
  55. _, ok = m[0]
  56. }
  57. fmt.Printf("%s\n", e(m[0]))
  58. }
  59. }
  60.  
Success #stdin #stdout 0.43s 10304KB
stdin
10
19999
19998
19997
19996
19995
19994
19993
19992
19991
19990
stdout
11111000000001111
1111111111111111111111111111111111110
10000010100111001
11110000000011100
111110011111110
11111110000000010
111101101
11111110000011000
101011011001111
11110000001110