Wyskakuje mi ciągle błędna odpowiedź. Zadbałem o "inne" liczenie, tak aby nie wyjść poza jakiekolwiek ograniczenia zmiennych, ale cały czas coś jest nie tak. Próbowałem unsigned long long int oraz double z zaokrąglaniem, nie działa. Każdy przykład jaki mi przyjdzie do głowy działa prawidłowo.
unsigned long int binomialCoefficient(int n, int k)
{
if (n < k)
return 0;
unsigned long int result = 1;
// get [ n!/(n-k)! ] value
for (int i = n; i > n - k; --i)
result *= i;
// divide by (k!)
for (int value = k; value > 1; --value)
result /= value;
return result;
}
void dwumiany()
{
int tests;
cin >> tests;
for (int t = 0; t < tests; ++t)
{
int n, k;
cin >> n >> k;
cout << binomialCoefficient(n, k) << endl;
}
}
int main()
{
dwumiany();
return 0;
}
W czym tu jest problem?