Я вычислил код ниже для вычисления nCr для n значений testCount. Это, кажется, работает отлично подходит для моих ценностей, но testcases хакера земли не удается, связь проблемы http://www.hackerearth.com/problem/golf/minimal-combinatorial/description/ может кто-нибудь сказать мне, что есть потенциал заблуждение в моей логикеПрограмма написана для вычисления значения nCr (C++)
`#include <iostream>
using namespace std;
int main()
{
int testCount;
int n , r;
cin >> testCount;
for (int i = 0 ; i < testCount ; i++)
{
long int a=1;
long int b=1;
long int c=1;
cin >> n;
cin >> r;
for (int i = n ; i > 1 ; i--)
{
a = a * i;
}
for (int i = n-r; i >= 1 ; i--)
{
b=b*i;
}
for (int i=r;i >=1;i--)
{
c=c*i;
}
long int result=a/(b*c);
cout << result<<"\n";
}
return 0;
}
` упрощена числитель и знаменатель случае
`#include <iostream>
using namespace std;
int main()
{
int testCount;
int n , r;
cin >> testCount;
for (int i = 0 ; i < testCount ; i++)
{
long int numerator=1;
long int denominator=1;
cin >> n;
cin >> r;
for (int i = n ; i > r ; i--)
{
numerator = numerator * i;
}
for (int i = n-r; i >= 1 ; i--)
{
denominator=denominator*i;
}
long int result=numerator/denominator;
cout << result;
}
return 0;
} `
Вы можете иметь переполнение, то можно упростить yourselfs общий множитель из числитель/знаменатель. – Jarod42
Связано с [which-is-best-way-to-calculate-ncr] (http://stackoverflow.com/questions/11809502/which-is-better-way-to-calculate-ncr) – Jarod42
@ Jarod42 Я сделал это также, но это также терпит неудачу. У меня не должно быть переполнения, поскольку они ограничивают значение с помощью 64-битного int. Упрощенная версия находится в редакции – Ajay