Hiển thị các bài đăng có nhãn ma phương. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn ma phương. Hiển thị tất cả bài đăng

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