LẬp trình tính 100! xài Pascal..........
LẬp trình tính 100! xài Pascal..........
Bài này quá đơn giản mà bạn!Có rất nhiều cách!
Mình có thể đưa ra cho các bạn 1 vd về đoạn trình cốt lõi:
"Dùng vòng for"
giaithua:=1;
for i:=1 to 100 do giaithua:=giaithua*i;
bạn có thể dùng đệ qui trong chương trình con:
x!:=x*(x-1)!
ok.
Ohhhhhhhhh các bạn hai quá..........
cho mình hỏi biến giathua kiểu gì vậy???
hay biến x kiểu gì thế ? ? ? ? ? ? ?
longint chi là 2,1 tỉ thôi nhé...........
100! ??????????????????????????
100! tràn số rồi. không tính được đâu
lâu quá không lên mạng cũng có nhiều chuyện ghê
theo minh bài này ta co thê sử dụng một mảng một chiều dể tinh
với mảng này mình co thể tính dược tới 8000! dấy
[=========> Bổ sung bài viết <=========]
mỗi phần tử là kiểu longint củng dược dấy
chỉ khoảng 1000 phần tử có lẽ là dủ
Được sửa bởi nguyenvan27 lúc 08:25 ngày 24-07-2008 Reason: Bổ sung bài viết
Bài này mình làm rồi, tính đến 10000! vô tư, 100000! cũng được nhưng đơi hơi phê. Giờ mình không có bài ở đây, tối mình post lên
sao minh hok thu lam ban mang nhi?
http://www.diendantinhoc.com/index.p...t=#entry178013Code:{$M 65500 0 655000} const Sochuso = 15000; const hecoso = 100000; type Bignum = array[0..Sochuso] of longint; Var A : Bignum; n : integer; cnt : longint; procedure Output; var i : longint; begin writeln(n,'! = '); write(A[A[0]]); cnt := 5; if A[A[0]] < 10 then cnt := 1 else if A[A[0]] < 100 then cnt := 2 else if A[A[0]] < 1000 then cnt := 3 else if A[A[0]] < 10000 then cnt := 4; for i := A[0]-1 downto 1 do begin if A[i] < 10 then write(0); if A[i] < 100 then write(0); if A[i] < 1000 then write(0); if A[i] < 10000 then write(0); write(A[i]); cnt := cnt + 5; end; writeln; writeln('Number of digit: ',cnt); end; procedure MultibySmall(x : integer; var B : Bignum); { B = A * x} var p,i,car : longint; begin car := 0; B[0] := A[0]; for i:= 1 to A[0] do begin p := A[i]; p := p * x + car; car := p div hecoso; B[i] := p mod hecoso; end; while car > 0 do begin inc(B[0]); B[B[0]] := car mod hecoso; car := car div hecoso; end; end; procedure Factorial; var x : integer; begin {Init: } fillchar(A,sizeof(A),0); A[0] := 1; A[1] := 1; {Multi:} for x := 2 to n do MultibySmall(x,A); end; BEGIN write('Input n = '); readln(n); Factorial; Output; readln; END.
Copy bên diendantinhoc.com \/
cách cao siu wa'. không hỉu nổi.
Đầu tiên dùng mảng chứa kq thì muốn khai báo 1000000 cũng được đựoc, nghĩa là chứa 1000000 chữ số. sau đó thêm 1 mảng nhân,cộng.
Bừa Bừa nó ra, được kQ ^^
Bookmarks