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