Rút tiền (THTB Đà Nẵng 2023)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1200 Thời gian: 1.0s Bộ nhớ: 1G Input: TIEN.INP Output: TIEN.OUT

An có rất nhiều tiền trong ngân hàng Thụy Sĩ, một hôm An cần rút một số tiền \(N\) \((N \leq 10^5)\), ngân hàng chỉ có \(K\) \((K \leq 10^3)\) loại mệnh giá lần lượt là \(A_1, A_2, \ldots, A_K\). Vì lí do đặc biệt nên An mong muốn số tờ tiền rút được là ít nhất.

Input

  • Dòng thứ nhất chứa 2 số nguyên dương \(N\)\(K\). Trong đó \(N\) là số tiền cần rút, \(K\) là số loại tiền mệnh giá.
  • Dòng thứ hai chứa \(K\) số nguyên dương \(A_1, A_2, \ldots, A_K\) lần lượt là mệnh giá của các tờ tiền.

Output

  • Ghi ra một số nguyên dương duy nhất là số tờ tiền ít nhất mà An rút được, nếu không thể in ra \(-1\).

Example

Test 1

Input
125 6
1 2 5 10 20 50
Output
4
Note

Số tờ tiền ít nhất có thể lấy là 4 tờ gồm 2 tờ mệnh giá 50, 1 tờ mệnh giá 20, 1 tờ mệnh giá 5.

Test 2

Input
5 3
2 4 6
Output
-1
Note

Không có cách nào để từ các tờ tiền mệnh giá 2, 4, 6 tạo thành số tiền là 5 cho nên ta in ra \(-1\).

Scoring

  • \(20\%\) số test có \(K = 2\)\(A_i\) khác nhau từng đôi một.
  • \(30\%\) số test tiếp theo có \(K \leq 10\), \(N \leq 100\)\(A_i\) khác nhau từng đôi một.
  • \(50\%\) số test còn lại không có giới hạn gì khác.

Bình luận (7)

Mới nhất
Tải bình luận...

Kỳ thi: