SỐ HIỆU VÀ GIÁ TRỊ

Một phần của tài liệu 150 bai tap toan tin (Trang 120 - 122)

Xét tất cả các hoán vị của dãy số tự nhiên (1, 2, ..., n); (1 ≤ n ≤ 12).Giả sử rằng các hoán vị được sắp xếp theo thứ tự từ điển. Ví dụ với n = 3, có 6 hốn vị: 1. 1 2 3 2. 1 3 2 3. 2 1 3 4. 2 3 1 5. 3 1 2 6. 3 2 1

Vấn đề đặt ra là: Cho trước một hoán vị (a1, a2, ..., an), hãy cho biết số thứ tự q của hốn vị đó và ngược lại: Cho trước một số thứ tự p (1 ≤≤≤≤ p ≤≤≤≤ n!) hãy tìm dãy hốn vị (b1, b2, ..., bn) mang số thứ tự p.

Dữ liệu: Vào từ file văn bản PERMUTE.INP

• Dịng 1: Chứa n số a1, a2, ..., an • Dịng 2: Chứa số p

Kết quả: Ghi ra file văn bản PERMUTE.OUT

• Dịng 1: Ghi số q

• Dịng 2: Ghi n số b1, b2, ..., bn

Các số trên một dòng của Input / Output file ghi cách nhau ít nhất một dấu cách

Ví dụ: PERMUTE.INP PERMUTE.OUT 2 1 3 4 3 2 3 1

111. PHÉP CO

Xét dãy số nguyên dương a = (a1, a2, ..., an) (2 ≤ n ≤ 100; 1 ≤ ai ≤ 100). Ban đầu dãy số được viết theo thứ tự từ trái sang phải, từ a1 tới an.

Xét phép co R(i): Thay hai phần tử liên tiếp ai và ai+1 thành (ai - ai+1). Sau đó dãy được đánh chỉ số lại: Từ trái sang phải, bắt đầu từ 1.

Ví d: dãy a = (5, 1, 4, 2, 3)

Với phép co R(1) ta có a = (4, 4, 2, 3) Với phép co R(3) ta có a = (4, 4, -1) Với phép co R(2) ta có a = (4, 5) Với phép co R(1) ta có a = (-1).

Yêu cầu: Cho trước dãy a và số k. Hãy tìm một dãy n - 1 phép co để biến dãy a thành (k). (Dãy a và số k được cho để luôn tồn tại ít nhất một phương án)

Dữ liệu: Vào từ file văn bản SEQ.INP

• Dịng 1: Chứa hai số n, k • Dịng 2: Chứa n số a1, a2, ..., an.

Kết quả: Ghi ra file văn bản SEQ.OUT

Gồm n - 1 dịng, mỗi dịng ghi vị trí của một phép biến đổi, các phép biến đổi phải được liệt kê theo

đúng thứ tự thực hiện Ví dụ SEQ.INP SEQ.OUT 5 -1 5 1 4 2 3 4 3 1 1

Một phần của tài liệu 150 bai tap toan tin (Trang 120 - 122)

Tải bản đầy đủ (PDF)

(165 trang)