[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):
- 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ố).
- 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