Statistics

Problem Statement for "Shopping"

Problem Statement

Christmas is coming soon and you still have so many things to buy. You are going to the store and don't expect to spend more than X dollars. You want to be able to pay any integer amount not exceeding X dollars, and you want to take as few coins as possible to achieve this.

You are given a int[] values, each element of which describes the dollar value of a kind of coin. You have an unlimited supply of each kind of coin. Return the minimal number of coins you need to take, or -1 if it is impossible to achieve your goal.

Definition

Class:
Shopping
Method:
minNumber
Parameters:
int, int[]
Returns:
int
Method signature:
int minNumber(int X, int[] values)
(be sure your method is public)

Constraints

  • X will be between 1 and 1000, inclusive.
  • values will contain between 1 and 10 elements, inclusive.
  • Each element of values will be between 1 and 1000, inclusive.
  • The elements in values will be distinct.

Examples

  1. 5

    {1}

    Returns: 5

  2. 1000

    {1}

    Returns: 1000

  3. 1000

    {1, 2}

    Returns: 501

  4. 5

    {1, 2}

    Returns: 3

  5. 3

    {1, 2}

    Returns: 2

  6. 20

    {1, 2, 5, 10}

    Returns: 5

    Taking 5 coins with values {1,2,2,5,10} allows you to pay any integer amount between 1 and 20, inclusive.

  7. 20

    {1, 2, 3, 4}

    Returns: 7

  8. 1

    {1, 2, 3, 4}

    Returns: 1

  9. 1000

    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

    Returns: 103

  10. 1000

    {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}

    Returns: -1

  11. 10

    {3, 4, 6}

    Returns: -1

  12. 1000

    {1, 3, 4, 6}

    Returns: 169

  13. 987

    {1, 17, 181}

    Returns: 31

  14. 930

    {1, 5, 881}

    Returns: 181

  15. 949

    {1, 2, 3, 7, 9, 47, 481}

    Returns: 19

  16. 222

    {1, 11, 22, 33, 44, 55, 66, 77, 88, 99}

    Returns: 15

  17. 20

    {1, 2, 100}

    Returns: 11

  18. 11

    {2, 3}

    Returns: -1

  19. 724

    {8, 5, 29, 1, 33}

    Returns: 29

  20. 874

    {423, 123, 354, 1, 674}

    Returns: 126

  21. 7

    {2, 4, 1, 7}

    Returns: 3

    Here, taking {2,4,1} is enough.

  22. 919

    {41, 23, 55, 27, 1}

    Returns: 40

  23. 654

    {88, 29, 1, 82, 79}

    Returns: 37

  24. 30

    {57, 1, 68, 33, 83, 7, 2}

    Returns: 8

  25. 643

    {17, 45, 1, 26, 10}

    Returns: 25

  26. 806

    {99, 70, 76, 47, 131, 1}

    Returns: 53

  27. 468

    {34, 73, 57, 97, 27, 1, 48, 8}

    Returns: 16

  28. 768

    {46, 71, 15, 1, 57}

    Returns: 28

  29. 205

    {11, 1, 25, 12, 46, 39}

    Returns: 17

  30. 432

    {90, 23, 82, 28, 50, 10, 7, 1}

    Returns: 15

  31. 370

    {147, 979, 1, 78, 517, 772}

    Returns: 80

  32. 872

    {775, 450, 835, 1}

    Returns: 450

  33. 887

    {432, 355, 445, 959, 22, 31, 1, 234, 563, 844}

    Returns: 31

  34. 391

    {916, 13, 649, 344, 873, 304, 1}

    Returns: 36

  35. 20

    {2,4,6,8}

    Returns: -1

    These nominals allow you to pay only even amounts.

  36. 600

    {1,2,3,10,11,30}

    Returns: 25

  37. 1000

    {512,128,32,8,2,1,4,16,64,256}

    Returns: 10

  38. 1000

    {1, 10, 100, 105 }

    Returns: 27

  39. 2

    {1, 1000 }

    Returns: 2

  40. 10

    {1, 2, 7 }

    Returns: 5

  41. 10

    {1, 9 }

    Returns: 9

  42. 7

    {1, 2, 3, 4 }

    Returns: 3

  43. 5

    {1, 2, 4, 8, 16, 32 }

    Returns: 3

  44. 15

    {1, 10 }

    Returns: 10

  45. 10

    {1, 100 }

    Returns: 10

  46. 93

    {1, 23 }

    Returns: 26

  47. 11

    {1, 10 }

    Returns: 10

  48. 1

    {1 }

    Returns: 1

  49. 4

    {1, 3, 4 }

    Returns: 3

  50. 1

    {2 }

    Returns: -1

  51. 1000

    {1, 990 }

    Returns: 990

  52. 7

    {1, 3 }

    Returns: 4

  53. 600

    {1 }

    Returns: 600

  54. 6

    {1, 2, 3, 4, 5, 6 }

    Returns: 3

  55. 155

    {1, 2, 10, 20, 40, 80 }

    Returns: 9

  56. 60

    {1, 29 }

    Returns: 30

  57. 4

    {1, 3 }

    Returns: 3

  58. 5

    {1, 2, 10 }

    Returns: 3

  59. 999

    {1, 2, 3, 4, 5, 6, 7, 8, 9 }

    Returns: 114

  60. 17

    {1, 5, 6, 7, 8 }

    Returns: 6

  61. 1000

    {1 }

    Returns: 1000

  62. 21

    {1, 2, 5, 10 }

    Returns: 6

  63. 12

    {1, 2, 3, 4, 5 }

    Returns: 4

  64. 1000

    {1, 2, 3, 4, 7, 8, 14, 15, 31, 32 }

    Returns: 36

  65. 1

    {1, 5 }

    Returns: 1

  66. 500

    {1, 2, 4, 8, 16, 32, 64, 128, 246, 249 }

    Returns: 9

  67. 30

    {1, 23 }

    Returns: 23

  68. 14

    {1, 2, 4, 8 }

    Returns: 4

  69. 997

    {2, 3, 4, 5, 123, 125, 127, 1, 55, 17 }

    Returns: 16

  70. 100

    {2, 3, 1, 54, 34, 65, 98, 67, 128, 324 }

    Returns: 14

  71. 65

    {1, 35 }

    Returns: 35

  72. 1000

    {998, 999, 1 }

    Returns: 998

  73. 1000

    {1, 2, 3, 4, 7, 14, 15, 497, 999, 1000 }

    Returns: 38

  74. 5

    {1, 4 }

    Returns: 4

  75. 27

    {1, 7, 8, 14 }

    Returns: 8


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: