#include <stdio.h>
/* 階乗を求める関数(再帰なし) */
int fact(int n)
{
int result = 1;
int i;
for(i = 1; i <= n; i++) {
result *= i;
}
return result;
}
/* 組み合わせ nCr を求める関数 */
int comb(int n, int r)
{
return fact(n) / (fact(r) * fact(n - r));
}
int main(void)
{
printf("5C2 = %d\n", comb
(5, 2)); printf("6C3 = %d\n", comb
(6, 3)); printf("7C4 = %d\n", comb
(7, 4));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiDpmo7kuZfjgpLmsYLjgoHjgovplqLmlbDvvIjlho3luLDjgarjgZfvvIkgKi8KaW50IGZhY3QoaW50IG4pCnsKICAgIGludCByZXN1bHQgPSAxOwogICAgaW50IGk7CgogICAgZm9yKGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIHJlc3VsdCAqPSBpOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7Cn0KCi8qIOe1hOOBv+WQiOOCj+OBmyBuQ3Ig44KS5rGC44KB44KL6Zai5pWwICovCmludCBjb21iKGludCBuLCBpbnQgcikKewogICAgcmV0dXJuIGZhY3QobikgLyAoZmFjdChyKSAqIGZhY3QobiAtIHIpKTsKfQoKaW50IG1haW4odm9pZCkKewogICAgcHJpbnRmKCI1QzIgPSAlZFxuIiwgY29tYig1LCAyKSk7CiAgICBwcmludGYoIjZDMyA9ICVkXG4iLCBjb21iKDYsIDMpKTsKICAgIHByaW50ZigiN0M0ID0gJWRcbiIsIGNvbWIoNywgNCkpOwoKICAgIHJldHVybiAwOwp9