Chủ đề: tính N!
-
11-03-2010, 02:53 AM #1
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 2
tính N!
làm thế nào để tính ổitnngg pascal với N là số lớn. mình nghe nói phải làm trên mảng nhưng chưa biết làm thế nào có ai biết ko giúp mình với
-
11-03-2010, 03:51 AM #2
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Gửi bởi quynhlien8513
Mã:var gt:array[0..1000] of int64; n:word; procedure init; var i:word; begin gt[0]:=1; for i:=1 to n do gt[i]:=gt[i-1]*i; end; begin write('n=');readln(n); init; write('Giai thua thu N=',gt[n]); end.
Thân!
-
11-03-2010, 04:44 AM #3
Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Gửi bởi binhnguyenLQD-kg
Việc dùng mảng để tính n! là bạn sử dụng mảng để lưu kết quả, mỗi phần tử của mảng là 1 chữ số của kq. Vd với n=5, kq=120 thì mảng cuối cùng sẽ là 1,2,0. Các bước tính như sau:
đầu tiên, mảng chỉ có 1 chữ số là 1 (0!). Tăng i =>1 tức là tính 1! thì nhân mảng với 1, được mảng mới là 1. Tăng i=>2 nhân mảng với 2 được mảng là 2, cứ như thế tới khi i tới n thì mảng thu được là kết quả cần tìm.
Việc nhân mảng với 1 số các bạn tiến hành giống như nhân trên giấy các bạn đã được học, để dễ cài đặt, các bạn có thể sử dụng 1 mảng trung gian (như nhân = tay ấy). Và theo kinh nghiệm của mình, nếu bạn xếp ngược mảng kết quả thì nhân dễ hơn, cài đặt gọn hơn. Vd kq là 120 thì bạn lưu là 0,2,1 và nhân ngược từ đầu về cuối.
Mình chỉ hướng dẫn các bạn cách làm, các bạn thử bắt tay vào làm xem, nếu có gì thắc mắc không hiểu có thể đưa câu hỏi lên.
Để đáp ứng nhu cầu ngày càng đa dạng của khách hàng trong các lĩnh vực chuyên biệt, 3D Thinking đang tập trung phát triển các trung tâm dịch vụ chuyên sâu theo ngành. Mỗi trung tâm sẽ phụ trách...
Đưa công nghệ quét 3D vào lĩnh vực mỹ thuật và tạo hình