Добавить измерение в многомерный массив в C #

Я делаю программу, которая вычисляет вероятность лотереи. Спецификация - выбрать 5 чисел из 47 и 1 из 27

Итак, я сделал следующее:

#include <iostream>

long int choose(unsigned n, unsigned k);
long int factorial(unsigned n);

int main(){
    using namespace std;
    long int regularProb, megaProb;
    regularProb = choose(47, 5);
    megaProb = choose(27, 1);
    cout << "The probability of the correct number is 1 out of " << (regularProb * megaProb) << endl;

    return 0;
}

long int choose(unsigned n, unsigned k){    
    return factorial(n) / (factorial(k) * factorial(n-k));
}

long int factorial(unsigned n){
    long int result = 1;
    for (int i=2;i<=n;i++) result *= i;
    return result;
}

Однако программа не работает. Программа рассчитывает 30 секунд, а затем дает мне Процесс 4 завершился с кодом -1,073,741,676 . Мне нужно изменить все long int на long double, но это теряет точность. Это потому, что long int слишком короток для больших значений? Хотя я думал, что long int в настоящее время 64-битные? Мой компилятор - g ++ win32 (64-битный хост).

9
задан Pwnna 10 May 2011 в 15:50
поделиться