PDA

View Full Version : Thuat toan tinh (A^C/C!) ???



Nguyễn Khánh
24-07-2003, 16:45
Chào mọi người!!!
Mỉnh có một công thức như sau:
G=(A^C/C!)/(1+A+A^2/2!+A^3/3!+...+A^C/C!)
Trong đó: A là số thực tử 0.1 đến 25000
C là số nguyên tử 1 đến 25000
Nếu tính A^C hay C! thỉ quá lớn.
Mình nghĩ phải phân tích n! thảnh tích của các số nguyên tố, A^C cũng vậy, nhưng A là số thực nên gặp khó khăn.
Giúp mình với!!! Có ai có giải pháp khác không?

haison3000
25-07-2003, 10:34
Chào mọi người!!!
Mỉnh có một công thức như sau:
G=(A^C/C!)/(1+A+A^2/2!+A^3/3!+...+A^C/C!)
Trong đó: A là số thực tử 0.1 đến 25000
C là số nguyên tử 1 đến 25000
Nếu tính A^C hay C! thỉ quá lớn.
Mình nghĩ phải phân tích n! thảnh tích của các số nguyên tố, A^C cũng vậy, nhưng A là số thực nên gặp khó khăn.
Giúp mình với!!! Có ai có giải pháp khác không?
Mục đích của bạn là tính A^C/C! thôi vì vậy bạn đâu cần tính A^C với C! riêng biệt.
Bạn chỉ cần làm thế này:
g=1;
for i:=1 to C do
g:=g* A/i;
vậy là OK.

Nguyễn Khánh
25-07-2003, 22:54
Chào Haison3000,
Cảm ơn bạn đã quan tâm!
Ý kiến của bạn rất hay, tuy nhiên nếu A gần bằng C và lớn thì vẫn bị Overflow (chẳng hạn A=790, C=800). Bài toán của mình yêu cầu A<=C, tức A/C <=1, và C lớn cỡ 25000. Liệu có cách nào khác không bạn, giúp mình với nhé.

fIREwALL57
06-08-2003, 21:28
Bạn thử áp dụng thuật giải chia để trị xem sao

Mach2
07-08-2003, 04:54
Bạn tính sai số của khai triển exp(x) à? Có cần phải chính xác vậy không? Mình nghĩ nếu n=25000 thì sai số đó nhỏ đến nỗi ko thể biểu diễn được bằng bất kỳ kiểu số nào, miễn là x nằm trong miền xác định để khai triển đó hội tụ.