[DHBB24 - HLK - 10] Bài 1: Hoán đổi

Xem dạng PDF

Gửi bài giải

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

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Trong giờ giải lao, do lớp vừa học xong các kiến thức về số nguyên tố, nên lớp trưởng của John đã suy nghĩ ra một trò chơi về dãy số cũng khá thú vị. Trò chơi như sau:

Cho một dãy số ~a[1], a[2], \dots, a[n]~, gồm các số nguyên phân biệt từ ~1~ đến ~n~. Nhiệm vụ là ta phải sắp xếp các số theo thứ tự tăng dần theo qui tắc sau (có thể áp dụng nhiều lần):

  1. Chọn trong dãy số 2 chỉ số ~i, j~ (~1 \le i < j \le n~; ~(j - i + 1)~ là số nguyên tố).
  2. Hoán đổi 2 số tại vị trí ~i, j~.

Không cần thiết phải sử dụng số lần nhỏ nhất các qui tắc trên, nhưng không được sử dụng vượt quá ~5 \times n~ lần.

Yêu cầu: Hãy thực hiện các thao tác hoán đổi để sắp xếp dãy số theo thứ tự tăng dần.

Input

  • Dòng đầu tiên chứa số nguyên ~n~ (~1 \le n \le 10^5~).
  • Dòng tiếp theo chứa ~n~ số nguyên phân biệt ~a[1], a[2], \dots, a[n]~ (~1 \le a[i] \le n~).

Output

  • Dòng đầu tiên, in số nguyên ~k~ (~0 \le k \le 5n~) là số lần qui tắc được sử dụng.
  • Dòng tiếp theo in ~k~ cặp ~(i, j)~ đã hoán đổi. Với ~i, j~ thỏa yêu cầu đề bài. Nếu có nhiều đáp án ta in một đáp án bất kỳ.

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.