Hi all,
I'm quite new to programming, and trying to write a c++ program that calculates the binomial coefficient of two numbers. This can be used for calculating the probability of, for example, winning a lottery game. The formula is as follows:
Where ! means the factorial of the number. My problem is that if I want to calculate, say, the number of possible combinations in the state lottery game in my country where you can select 5 numbers out of 90, the program has to deal with VERY large numbers, like 90! which is 1 x 2 x ... x 89 x 90. My idea was that n! is divisible by (n-k)!, so our example then looks like:Code:n! -------- (n-k)!k!
So I've written a function that returns the product of a number series, like 86-90. It works with smaller numbers but it seems that 86 x ... x 90 is too large for it, even if I set the data type to unsigned long int. The function is:Code:90! 1 x 2 x ... x 85 x ... x 90 86 x 87 x 88 x 90 --------- = --------------------------- = ----------------- (90-5)!5! 1 x 2 x ... x 85 x 1 x...x5 1 x 2 x ... x 5
What's wrong? (and sorry for the long post)Code:unsigned long int multiply_from_to (int From, int To) { int i, Product=1; for (i=0;i<=To-From;i++) { Product*=From+i; } return Product; }