Необходимо вычислить энное число Каталана. Посчитал числитель и знаменатель, а поделить не могу. прошу помощи. Или хоть на яве с BigInteger решение...
Сам код
Код:
#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
    const int base = 1000*1000*1000;
    vector <int> a, b;
    int n, carry = 0;
    cin>>n;
    a.push_back(n);                      //числитель считаем от n+2 до 2*n
    for (int ii=n+2; ii!=(2*n)+1;++ii) { //т.о. мы сразу поделили на n+1 (первый множитель чисел каталана)
        carry = 0;                       //и на n (из знаменателя)
        for (size_t i=0; i<a.size() || carry; ++i) {
           if (i == a.size())
          a.push_back (0);
            long long cur = carry + a[i] * 1ll * ii;
              a[i] = int (cur % base);
              carry = int (cur / base);
             }
        }
    while (a.size() > 1 && a.back() == 0) a.pop_back();
    b.push_back(n);                //знаменатель считаем от 1 до n
    for (int ii=1; ii!=n+1;++ii) { //т.к. один из n! сократился со знаменателем
        carry = 0;
        for (size_t i=0; i<b.size() || carry; ++i) {
            if (i == b.size())
          b.push_back (0);
           long long cur = carry + b[i] * 1ll * ii;
              b[i] = int (cur % base);
             carry = int (cur / base);
            }
         }
    while (b.size() > 1 && b.back() == 0) b.pop_back();
    cout<<(a.empty() ? 0 : a.back());
    for (int i=(int)a.size()-2; i>=0; --i) cout<<(a[i]);
    cout<<"   ";
    cout<<(b.empty() ? 0 : b.back());
    for (int i=(int)b.size()-2; i>=0; --i) cout<<(b[i]);
    //system("PAUSE");
    cout<<endl;
    return 0;
}