Nguồn đề bài http://www.spoj.com/PTIT/problems/BCFACT/
1. Đề bài tính giai thừa
Tính n!
Dữ liệu
Mỗi test trên 1 dòng chứa duy nhất một số nguyên dương n (n<=17).
Bộ test kết thúc bởi 1 dòng chứa số 0.
Kết quả
Mỗi test xuất ra trên 1 dòng chứa kết quả n!
Ví dụ
Input:
2
3
0
Output:
2
6
2. Code tham khảo tính giai thừa
Bài này mình viết chưa được tối ưu 😀 các bạn có thể tự cải tiến.
TYPE dayso=ARRAY[1..20000] OF BYTE;
VAR a:dayso;
i,n:BYTE;
FUNCTION gt(a:dayso; n:BYTE; vt:BYTE):qword;
VAR i:BYTE;
BEGIN
gt:=1;
FOR i:= 1 TO a[vt] DO
gt:=gt*I;
END;
BEGIN
n:=1;
REPEAT
readln(a[n]);
inc(n);
UNTIL a[n-1]=0;
FOR i:=1 TO n-2 DO
writeln(gt(a,n-1,i));
END.