Đề bài
Cho dãy số gồm số nguyên , có thể chia dãy số này thành các đoạn liên tiếp sao cho tổng các số trong mỗi đoạn là lũy thừa cơ số 2.
Ví dụ: dãy gồm 6 số có 2 cách chia thỏa mãn:
- Cách 1: Chia 3 đoạn {5,3}; {1,1}; {1,3} có tổng lần lượt là: .
- Cách 2: Chia 4 đoạn {5,3}; {1}; {1}; {1,3} có tổng lần lượt là .
Yêu cầu: Em hãy viết chương trình tìm cách chia dãy trên thành các đoạn con liên tiếp sao cho số lượng đoạn con là ít nhất và tổng các số trong mỗi đoạn là lũy thừa cơ số 2?
Dữ liệu vàoCHIADAY.INP
Trong tệp văn bản CHIADAY.INP gồm:
- Dòng 1 là số nguyên dương ;
- Dòng 2 gồm số nguyên ;
Kết quả raCHIADAY.OUT
Đưa ra tệp văn bản CHIADAY.OUT một số nguyên là số đoạn ít nhất chia được. Nếu không chia được thì in ra -1.
Ràng buộc
- Subtask 1: 25% số test có tổng tất cả các số trong dãy là một lũy thừa cơ số 2;
- Subtask 2: 25% số test có ;
- Subtask 3: 25% số test có ;
- Subtask 4: 25% số test không có ràng buộc gì thêm.
Ví dụ
6 5 3 1 1 1 3
3