Đoạn nguyên tố

Xem dạng PDF

Gửi bài giải

Điểm: 12,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
Đề chọn HSG 9 Ninh Bình
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho một dãy số nguyên dương ~𝐴~ = (~𝑎_1, 𝑎_2, … , 𝑎_𝑛~) (~𝑎_𝑖 ≤ 10^6; 1 ≤ 𝑖 ≤ 𝑛~). Với mỗi phần tử ~𝑎_𝑖~ bạn được phép tăng hoặc giảm một lượng tùy ý để được một số nguyên tố. Khi đó chi phí của bạn cần bỏ ra chính là lượng tăng hoặc giảm đó.

Yêu cầu: Hãy chọn ra một đoạn con gồm ~𝑘~ phần tử liên tiếp nhau của dãy ~𝐴~ sao cho tổng chi phí biến đổi mọi phần tử trong đoạn con đó thành các số nguyên tố là nhỏ nhất.

Dữ liệu vào:

  • Dòng 1: Chứa hai số nguyên dương ~𝑛~, ~𝑘~ (~1 ≤ 𝑘 ≤ 𝑛 ≤ 10^5~);
  • Dòng 2: Chứa ~𝑛~ số nguyên dương ~𝑎_1, 𝑎_2, . . , 𝑎_𝑛~ (~𝑎_𝑖 ≤ 10^6~ ~∀𝑖 = 1,2, … , 𝑛~).

Dữ liệu ra:

  • Gồm một số nguyên duy nhất là tổng chi phí biến đổi nhỏ nhất tìm được.

Ví dụ:

Input

4 2 
9 5 8 15  

Output

1

Giải thích:

  • Chọn đoạn [5,8], biến đổi 8 → 7 với chi phí là 1.

Ràng buộc:

  • Subtask1: Có 20% số test có ~𝑎_𝑖~ đều là số nguyên tố ~∀ 𝑖~ = 1,2, … , ~𝑛~.
  • Subtask2: 40% số test ~𝑛~, ~𝑘~ ≤ 5000; ~𝑎_i ≤ 5000~ ~∀ 𝑖~ = 1,2, … , ~𝑛~.
  • Subtask3: 40% số test còn lại không có ràng buộc gì thêm.

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.