Я написал код для вычисления N-го каталонского номера. Однако он не возвращает правильный результат при N = 20 и далее. Результаты, когда N < 20 верны, поэтому я не уверен, что не так.Рассчитать n-е каталонское число
Итак, когда N = 20, его предполагается вернуть 6564120420, но он возвращает 2269153124 для меня.
Может кто-нибудь указать мне в правильном направлении?
#include <iostream>
using namespace std;
unsigned long int countTree(unsigned int N)
{
//used to store catalan numbers
unsigned long int catalan[N+1];
//N(0)=N(1)=1
catalan[0]=catalan[1]=1;
int i,j;
for(i=2;i<=N;i++)
{
catalan[i]=0;
for(j=0;j<i;j++)
{
catalan[i]+=catalan[j]*catalan[i-j-1];
}
}
return catalan[N];
}
int main()
{
unsigned int x;
cout<<"Input N:"<<endl;
cin>>x;
unsigned long int result=countTree(x);
cout<<result<<endl;
return 0;
}
О штопать , Пропустил это. Благодарю. – user2211574
@ user2211574 Если это помогает, 'long long' гарантированно будет не менее 64 бит. Если вам нужно большее количество, чем это, вам, вероятно, придется заглянуть в специализированную библиотеку, такую как GMP. – IllusiveBrian
[Ссылка только ответы категорически не рекомендуется на SO!] (Http://meta.stackexchange.com/questions/225370/your-answer-is-in-another-castle-when-is-an-answer-not-an -answer) –