Đ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:
            
        
        
                    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