Chỉ giúp em bài lũy thừa này với các pas pro N!!! mod m

Cho trước số nguyên dương N và M. Hãy tính giá trị của biểu thức N!!! mod M.
 

quanltv

Sư phụ của ADMIN
Cần tạo 1 hàm (function) để tính giai thừa của 1 số nguyên dương. Code đầy đủ sẽ như sau

Mã:
Program dothanhydhth_22_03;
Var m,n,i,j: integer;
Function giaithua(n:integer): longint;
begin
  if (n=1) or (n=2) then
    giaithua:=n
  else
    giaithua:=giaithua(n-1)*n;
end;


BEGIN
  writeln('Chuong trinh nhap N,M va tinh N!!! mod m');
  write('Nhap n,m: '); readln(n,m);
  writeln('Ket qua can tinh ',giaithua(giaithua(giaithua(n))) mod m);
  readln;
END.

Code này không chạy được vì vượt quá giới hạn Stack mà Pascal cho phép. Ví dụ như 3!!! thì máy tính Casio đã không tính được rồi. Bài toán này chắc chắc sẽ rất ít tính thực tiễn, hoặc bạn có thể dùng ngôn ngữ khác như Java hoặc Delphi.

Có những cách khác để tính toán với những số rất lớn trong Pascal
  • Dùng kiểu chuỗi: Giới hạn ở 255 chữ số
  • Kiểu mảng: được hàng ngàn chữ số, nhưng bộ nhớ dành cho mảng là 64KB
  • Dùng cấu trúc dữ liệu kiểu mảng động để thao tác với các số lớn tới hàng tỉ chữ số (vì kích thước mảng động phụ thuộc vào RAM thực trên máy tính)
 
Nhất thiết phải làm ra và chạy được anh quanltv. Vì đây là 1 đề thi học sinh giỏi. Nó có một số test vì số quá lơn nên tôi không biết cách làm. Anh giúp tôi với
 
Tác giả: Đào Anh Pha

Mã:
[FONT=monospace]#include <conio.h>[/FONT]
[FONT=monospace]#include <iostream.h>[/FONT]
[FONT=monospace]/*Ham tra ve so nguyen tinh n! (Factorial)*/[/FONT]
[FONT=monospace]long int Fac(int n) {[/FONT]
[FONT=monospace]   if(n==0)[/FONT]
[FONT=monospace]      return 1;[/FONT]
[FONT=monospace]   else[/FONT]
[FONT=monospace]      return n*Fac(n-1);[/FONT]
[FONT=monospace]}[/FONT]
[FONT=monospace]/*Chuong trinh chinh*/[/FONT]
[FONT=monospace]void main(){[/FONT]
[FONT=monospace]   clrscr();[/FONT]
[FONT=monospace]   int n;[/FONT]
[FONT=monospace]   cout<<"Nhap vao gia tri cua n = ";[/FONT]
[FONT=monospace]   cin>>n;[/FONT]
[FONT=monospace]   cout<<n<<"! = "<<Fac(n);[/FONT]
[FONT=monospace]   getch();[/FONT]
[FONT=monospace]}[/FONT]
 

Bài viết đang hot

Thống kê

Chủ đề
102,787
Bài viết
470,608
Thành viên
340,592
Thành viên mới nhất
NDHU
Top