Điểm:
10
Thời gian:
40.0s
Bộ nhớ:
120M
Input:
bàn phím
Output:
màn hình
Cho một mảng A gồm N phần tử và 1 số K, các phần tử của mảng A được đánh số từ 1 đến N. Gọi một hoán vị của mảng A là mảng B. Hãy viết chương trình tìm xem liệu có hoán vị B nào thỏa mãn:
Các phần tử ở cùng một vị trí trong cả A và B đều có chênh lệch bằng K.
Ví dụ:
- Cho một mảng gồm 4 phần tử A = [1, 2, 3, 4], K = 2. Ta tìm được một hoán vị B = [3, 4, 1, 2] thỏa mãn điều kiện đề bài vì:
- Ta có B[0] − A[0] = 3 − 1 = 2.
- Tất cả các vị trí khác đều thỏa mãn tương tự.
Yêu cầu: Tìm ra hoán vị của mảng B
Dữ liệu: nhập dữ liệu gồm
- Dòng đầu tiên : Số nguyên N (N ≤ 1001) là độ dài của mảng và 1 số K (0 ≤ K < N)
Kết quả:
- Nếu có hoán vị B nào thỏa mãn đề bài, in ra hoán vị B đó, mỗi phần tử cách nhau 1 dấu cách.
- Nếu không có hoán vị B nào thỏa mãn đề bài, in ra -1.
Ví dụ 1
ĐẦU VÀO
3 0
ĐẦU RA
1 2 3
Ví dụ 1
ĐẦU VÀO
16 8
ĐẦU RA
9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8
hint
Số phần tử có thể chia chỉ có thể là 2 * k tại vì 2 * k phải bé hơn hoặc bằng N, vì nếu lớn hơn thì ở phần từ sẽ tạo ra số âm, và phần cộng sẽ tạo ra số lớn hơn N, ví dụ: N = 4 và k = 3, thì [1, 2] sẽ cộng và [3, 4] sẽ trừ => [4, 5] và [0, 1]
Bình luận