fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. using T = unsigned long long;
  5.  
  6. constexpr T gcd(T a, T b) {
  7. return b == 0 ? a : gcd( b, a % b );
  8. }
  9.  
  10. constexpr T binom(T n, T k) {
  11. if ( k > n - k )
  12. k = n - k;
  13. T p = 1;
  14. T nn = n;
  15. for ( T kk = 1; kk <= k; ++kk ) {
  16. T x = gcd( n - kk + 1, kk );
  17. p = p / ( kk / x ) * ( ( n - kk + 1 ) / x );
  18. }
  19. return p;
  20. }
  21.  
  22. constexpr T f(int n) {
  23. if ( n == 1 )
  24. return 1;
  25. T sum = 0;
  26. for ( int i = 1; i < n; ++i )
  27. sum += binom(n,i) * f(i) * f(n-i);
  28. return sum / 2;
  29. }
  30.  
  31. int main() {
  32. for (int i = 1; i < 19; ++i )
  33. cout << i << '\t' << f(i) << '\n';
  34. }
Success #stdin #stdout 3.36s 16064KB
stdin
Standard input is empty
stdout
1	1
2	1
3	3
4	15
5	105
6	945
7	10395
8	135135
9	2027025
10	34459425
11	654729075
12	13749310575
13	316234143225
14	7905853580625
15	213458046676875
16	6190283353629375
17	191898783962510625
18	6332659870762850625