Editorial for C++ Bài 3.E2: Tam giác Pascal khó!


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

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)\).
  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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)\).
  1. 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.

  2. 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ột for (j = 0; j <= i; j++) để tính và in ra các số trong từng hàng của tam giác Pascal.

  3. 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ếu j là 0 hoặc i là 0, giá trị của c được đặt là 1; ngược lại, giá trị của c được tính toán bằng công thức tam giác Pascal.

  4. Sau khi hoàn thành một hàng, xuống dòng endl để chuyển sang hàng tiếp theo.


Comments

There are no comments at the moment.