Biến đổi điểm

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 65M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python

Cho một dãy số nguyên dương ~A=a_1, a_2, ..., a_n)~ ~(a_i \le 10^6; 1 \le i \le n)~. Với mỗi phần tử ~a_i~ 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 đó.

Ví dụ số ~8~ tăng ~3~ bằng số nguyên tố ~11~ thì chi phí bằng ~3~ nhưng số ~8~ giảm ~1~ bằng số nguyên tố ~7~ thì chi phí bằng ~1~.

Yêu cầu:

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

Dữ liệu:

  • Dòng 1: Chứa hai số nguyên dương ~n, k~ ~(1 \le k \le n \le 10^5)~;
  • Dòng 2: Chứa ~n~ số nguyên dương ~a_1, a_2, ..., a_n~ ~(a_i \le 10^6~ ~\forall i=1,2,...,n~.

Kết quả:

  • Ghi ra 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 \to 7~ với chi phí là ~1.~

Ràng buộc:

  • ~20\%~ số test tương ứng với ~20\%~ số điểm có ~a_i~ đều là số nguyên tố ~\forall i=1,2,...,n~;
  • ~40\%~ test khác tương ứng với ~40\%~ số điểm có ~n, k \le 5000; a_i \le 5000~ ~\forall i=1,2,...,n~;
  • ~40\%~ test còn lại ứng với ~40\%~ số điểm không có ràng buộc bổ sung.

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.