如何在 C/C++ 中计算 n=100 的加泰罗尼亚数



当 n 大于 20 时,我的输出为 false。所以我需要帮助来计算加泰罗尼亚语的数字 c(n( n,n 小于 100

要计算大输入值的结果,您必须处理大整数(大于任何内置类型,如 int64(长整型((。大整数算术支持包含在一些语言中,如 C# 和 Python。

在C++你应该使用一些库,如GMP,Boost.Multiprecision或一些轻量级库(因为你只需要加法和乘法(。

 #include <gmp.h>
 mpz_t a, b;                 
 mpz_init_set_str (a, "191999293783437378367363763763"argv[1], 10);   
 mpz_init_set_str (b, "44766484748782378237827328-1829087234976123097", 10);
 mpz_add (t, a, b); 

很有可能自己编写这些操作的实现。

通过for循环调用函数

unsigned long int catalan(unsigned int n){
  if (n <= 1) return 1; 
  unsigned long int res = 0; 
  for (int i=0; i<n; i++) 
      res += catalan(i)*catalan(n-i-1); 
  return res; 
}

最新更新