Bối cảnh:hoán vị với Lặp: Tránh Overflow
Với n
quả bóng sao cho:
'a' balls are of colour GREEN
'b' balls are of colour BLUE
'c' balls are of colour RED
...
(tất nhiên a + b + c + ... = n
)
Số hoán vị, trong đó những quả bóng có thể được sắp xếp được đưa ra bởi:
perm = n!/(a! b! c! ..)
Câu hỏi 1: Làm thế nào tôi có thể 'thanh lịch' tính toán perm
để tránh một số nguyên tràn như càng lâu càng tốt, và chắc chắn rằng khi tôi thực hiện tính toán, tôi hoặc là có giá trị chính xác của perm
, hoặc tôi biết rằng kết quả cuối cùng sẽ tràn?
Về cơ bản, tôi muốn tránh sử dụng một cái gì đó như GNU GMP.
Tùy chọn, Câu hỏi 2: Đây có phải là thực sự ý tưởng tồi và tôi có nên tiếp tục sử dụng GMP không?
Tại sao bạn muốn tránh GMP? Nói chung, bạn muốn làm công việc ít nhất bạn có thể. – Dave
Phát hiện tràn thực sự là một trong những điểm yếu của C. Giả sử bạn quản lý để tránh tràn càng lâu càng tốt, và do đó có thể chắc chắn rằng bạn sẽ có giá trị đúng nếu-và-chỉ-nếu nó có thể tính toán nó mà không tràn. Thậm chí sau đó, bạn vẫn sẽ không biết liệu tràn thực sự xảy ra. – ruakh
@Dave: Bạn nói đúng. Nhưng vấn đề là thú vị, tuy nhiên. Vì vậy, câu hỏi vẫn còn cho những người quan tâm đến 'làm thế nào' nhiều hơn 'tại sao' :). Có thể ai đó sẽ sử dụng nó trong một chiếc 8051 trong một lò nướng bánh tương tác: P – ArjunShankar