Đoạn nguyên tố

View as PDF

Submit solution

Points: 50.00
Time limit: 1.0s
Memory limit: 64M
Input: stdin
Output: stdout

Author:
Problem types
Allowed languages
Assembly, Awk, Brain****, C, C++, Java, Pascal, Perl, Python, Sed, Text

Cho một dãy số nguyên dương ~a_1, a_2, a_3,.., a_n (1 \le 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 đó.

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 mọi phần tử trong đoạn cón đó 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 ~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_3,.., a_n (1 \le a_i \le 10^6,~ với ~1 \le i \le n)~

Dữ liệu 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 OUTPUT
4 2
9 5 8 15
1

Giải thích:

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

Giới hạn:

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

Loading...