Thứ Sáu, 8 tháng 2, 2019

[Pascal] Tìm Ma phương dạng 4n | Nguyễn Hoàng Huy

Đề bài: Một ma trận dạng 4n (với n ≥ 1) chứa các số từ 1 đến 4n2 được gọi là ma phương dạng 4n khi tổng S của các số trên từng dòng, trên từng cột và trên 2 đường chéo đều bằng nhau.
Ví dụ: Ma phương bậc 4 (n = 1) có dạng như sau:
Hình 1
Yêu cầu: Viết chương trình nhập vào số nguyên dương n (với n ≥ 1 và n ≤ 10), hãy xuất kết quả là ma phương dạng 4n ra màn hình có dạng: 4n dòng đầu tiên ghi 4n dòng của ma phương (trên mỗi dòng các số cách nhau bởi một khoảng cách); dòng 4n + 1 ghi giá trị tổng S.
Giải
Giải thuật để tìm ma phương dạng 4n (với n ≥ 1) như sau:
Bước 1: Chia ma trận ra thành từng ma trận nhỏ gồm 4 dòng và 4 cột (4 × 4)
Bước 2: Đánh số từ trái sang phải và từ trên xuống dưới vào các ô nằm trên đường chéo của từng ma trận nhỏ (như hình 2a).
Bước 3: Đánh số từ phải sang trái và từ dưới lên trên vào các ô còn lại (như hình 2b).
Hình 2a
Hình 2b
Tư tưởng: Theo hình 2, các ô nằm trên đường chéo là:
(1;1) (1;4) (1;5) (1;8) ...
(2;2) (2;3) (2;6) (2;7) ...
(3;2) (3;3) (3;6) (3;7) ...
(4;1) (4;4) (4;5) (4;8) ...
(5;1) (5;4) (5;5) (5;8) ...
Như vậy, các hàng thứ i có i chia hết cho 4 hoặc i-1 chia hết cho 4 thì sẽ có các ô (i; j) nằm trên đường chéo với j = {1; 4; 5; 8; 9; 12; 13; 16; ...}, các số trong tập này có quy luật là cộng 3 rồi cộng 1. Các hàng thứ i không thuộc trường hợp trên thì sẽ có các ô (i; j) nằm trên đường chéo với j = {2; 3; 6; 7; 10; 11; 14; 15; ...}, các số trong tập này có quy luật là cộng 1 rồi cộng 3. 
Dựa vào những điều trên, ta có thể đánh dấu những ô nằm trên đường chéo rồi điền số theo giải thuật nêu trên.
Chương trình:
Xem tại đây: http://mivi.pro/2jQHF6

Không có nhận xét nào:

Đăng nhận xét