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

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.