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.