Editorial for C++ Bài 3.E2: Tam giác Pascal khó!
Submitting an official solution before solving the problem yourself is a bannable offence.
Lời giải chi tiết:
Trước khi triển khai thuật toán, các bạn nhập vào \(Q\) truy vấn dựa trên khoảng giá trị \((1 \leq Q \leq 100)\).
Đầu tiên, các bạn cần nhập vào lựa chọn bạn muốn, sử dụng câu lệnh if
, else
.
Bước 2, kiểm tra truy vấn vừa nhập:
- Nếu truy vấn có dạng
1 n
in ra tam giác Pascal cân với số hàng bằng \(n (1 \leq n \leq 10)\).
Khai báo biến
row
để lưu giữ số lượng hàng của tam giác Pascal và được nhập vào từ người dùng.Vòng lặp đầu tiên
for (i = 0; i < row; i++)
dùng để duyệt qua từng hàng của tam giác, bắt đầu từ hàng đầu tiên(i=0)
đến hàng cuối cùng.Trong vòng lặp đầu tiên, vòng lặp for
(blk = 1; blk <= row - i; blk++)
được sử dụng để in ra các khoảng trắng để căn lề trước các số. Số lượng khoảng trắng giảm dần từ phải sang trái khi chúng ta đi từ hàng trên cùng xuống hàng dưới cùng.Vòng lặp thứ hai
for (j = 0; j <= i; j++)
được sử dụng để tính toán và in ra các số trong từng hàng của tam giác Pascal.Trong vòng lặp thứ hai, kiểm tra j hoặc i có bằng 0 hay không, tức là kiểm tra xem có phải là cột đầu tiên hay hàng đầu tiên không. Nếu đúng, giá trị của
c
được đặt là 1, vì ở cột đầu tiên và hàng đầu tiên, tất cả các giá trị là 1.Nếu không phải là cột đầu tiên hay hàng đầu tiên, giá trị của
c
được tính toán bằng cách sử dụng công thức tam giác Pascal:c = c * (i - j + 1) / j
.Cuối cùng, giá trị của
c
và một số khoảng trắng được in ra màn hình.
- Nếu truy vấn có dạng
2 n
in ra tam giác Pascal vuông cân với số hàng bằng \(n (1 \leq n \leq 10)\).
Khai báo biến
row
để lưu giữ số lượng hàng của tam giác Pascal và được nhập vào từ người dùng.Khác biệt chính ở đây là trong vòng lặp thứ nhất
for (i = 0; i < row; i++)
, không có vòng lặp để in ra khoảng trắng (biến blk và vòng lặp liên quan). Thay vào đó, chỉ có một vòng lặp duyệt qua các cộtfor (j = 0; j <= i; j++)
để tính và in ra các số trong từng hàng của tam giác Pascal.Các bước tính giá trị
c
và in ra màn hình giống với truy vấn thứ nhất. Nếuj
là 0 hoặci
là 0, giá trị củac
được đặt là 1; ngược lại, giá trị củac
được tính toán bằng công thức tam giác Pascal.Sau khi hoàn thành một hàng, xuống dòng
endl
để chuyển sang hàng tiếp theo.
Comments