BCFACT PTIT spoj – Giai thừa (Cơ bản)

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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *