C/C++の宿題片付けます 141代目
■ このスレッドは過去ログ倉庫に格納されています
0009デフォルトの名無しさん
2010/10/14(木) 02:03:52long long combi(long long n, long long k)
{
long long answer, i, j;
if (n < 30) {
answer = 1;
for (i = n, j = 1; i >= n - k + 1; i--, j++) {
answer *= i;
answer /= j;
}
return answer;
} else if (n % 2) {
return combi(n - 1, (n - 1) / 2) / (n / 2 + 1) * n;
} else {
return combi(n - 1, (n - 1) / 2) * 2;
}
}
int main(void)
{
int i;
for (i = 1; i < 100; i++) {
printf("%d: %lld\n", i, combi(static_cast<long long>(i), static_cast<long long>(i / 2)));
}
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています