세계! 문제가 있습니다. 오늘 카탈로니아 어 번호를 찾는 코드를 만들려고했습니다. 하지만 내 프로그램에 긴 숫자가 될 수 있습니다. 나는 분자와 분모를 발견했다. 그러나 나는 긴 숫자를 나눌 수 없다! 또한 표준 라이브러리 만이이 프로그램에서 사용해야합니다. 도와주세요, 제발. 이것은 내 코드입니다긴 숫자. 부서
#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);
for (int ii=n+2; ii!=(2*n)+1;++ii) {
carry = 0;
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);
for (int ii=1; ii!=n+1;++ii) {
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;
}
P.S. 나쁜 영어로 죄송합니다. =)
자신 만의 정밀도 라이브러리 대신 임의의 정밀도 라이브러리를 사용하지 않는 이유는 무엇입니까? 예를 들어 GMP (http://gmplib.org/) – grep
아마 숙제가 될 것입니다. – bruno
여기에서 정보를 얻을 수 있습니까? http://mathworld.wolfram.com/CatalanNumber.html –