Cần giúp đỡ về thuật toán, càng rõ ràng càng tốt
Đề bài như sau: Tam giác pascal bậc n là tam giác có n + 1 dòng và có dạng:
n=0: 1
n=1: 1 1
n=2: 1 2 1
n=3: 1 3 3 1
n=4: 1 4 6 4 1
Trong tam giác số này, giá trị các số trong hàng thứ n tuân theo quy luật sau:
- Số ở cột thứ n+1 và cột thứ nhất luôn bằng 1.
- Mỗi số ở cột n đến cột 2 bằng tổng hai số đứng ở hàng trên cùng cột và cột trước nó.
Giá trị các số ở hàng n là hệ số khi khai triển (x+y)^n
a. In ra tam giac pascal bậc n.
b. khai triển (x+y)^n
Ví dụ: n=3 thì in: x^3+3x^2y^1+3x^1y^2+y^3
n=4 thì in: x^5-5x^4y^1+10x^3y^2+10x^2y^3+5x^4y^1-y^5
Em có bài giải sẵn đây nhưng không hiểu thuật toán của nó. Có anh chị em cô bác nào giúp giùm em với. Thank you nhiều. Nếu có cách giải khác dễ hiểu hơn thì làm ơn chỉ cho em với. Cám ơn lần nữa.
Bài giải nó đây:
Program tamgiacso;
var m:array[1..100] of integer;
n,i,j,bac:integer;
begin
write('Nhap bac n: ');readln(n);
for i:=1 to n+1 do m[i]:=0; m[1]:=1;
writeln('Tam giac pascal bac ',n,' : ');
for i:=0 to n do
begin
for j:=i+1 downto 2 do m[j]:=m[j]+m[j-1];
for j:=1 to i+1 do write(m[j]:4);
writeln;
end;
writeln;
bac:=n;
writeln('Khai trien nhi thu bac n: ');
write('x^',bac);
for i:=2 to n do
Begin
bac:=bac-1;
write('+',m[i],'x^',bac,'y^',n-bac);
end;
write('+y^',n);
readln;
end.
Bookmarks