Tổng chia hết cho P
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
Cho một mảng A có ~n~ số nguyên dương ~a_1, a_2, ...a_n~ và một số nguyên dương ~p~. Hãy xóa đi đoạn con có độ dài nhỏ nhất (có thể là đoạn rỗng) sao cho tổng các phần tử còn lại của mảng chia hết cho ~p~.
Lưu ý: Không được phép xóa toàn bộ mảng và một đoạn con là một dãy các phần tử liên tiếp trong mảng.
Ràng buộc: ~1 \le n \le 10^5~; ~1 \le a_i, p \le 10^9~
Yêu cầu: Hãy in ra độ dài của đoạn con ngắn nhất cần xóa. Nếu không thể thực hiện, in ra -1.
Input
- Dòng đầu tiên chứa hai số nguyên ~n~ và ~p~.
- Dòng thứ hai chứa ~n~ số nguyên dương ~a_i~.
Output
- In ra độ dài nhỏ nhất của đoạn con cần xóa.
- Nếu không tồn tại cách xóa hợp lệ, in ra
-1.
Ví dụ
Sample Input 1
4 6
3 1 4 2
Sample Output 1
1
Giải thích: Tổng mảng là ~10~, không chia hết cho ~6~. Xóa đoạn [4] thì tổng còn lại là ~6~, chia hết cho ~6~.
Sample Input 2
5 9
6 3 5 2 1
Sample Output 2
2
Giải thích: Không thể xóa một phần tử duy nhất để tổng chia hết cho ~9~. Cách tốt nhất là xóa đoạn [5,2], khi đó phần còn lại [6,3,1] có tổng bằng ~10~.
Bình luận