#include <stdio.h>
/* 階乗を求める再帰関数 */
int fact(int n)
{
if(n == 0 || n == 1)
return 1;
return n * fact(n - 1);
}
/* 組み合わせ 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+CgovKiDpmo7kuZfjgpLmsYLjgoHjgovlho3luLDplqLmlbAgKi8KaW50IGZhY3QoaW50IG4pCnsKICAgIGlmKG4gPT0gMCB8fCBuID09IDEpCiAgICAgICAgcmV0dXJuIDE7CgogICAgcmV0dXJuIG4gKiBmYWN0KG4gLSAxKTsKfQoKLyog57WE44G/5ZCI44KP44GbIG5DciDjgpLmsYLjgoHjgovplqLmlbAgKi8KaW50IGNvbWIoaW50IG4sIGludCByKQp7CiAgICByZXR1cm4gZmFjdChuKSAvIChmYWN0KHIpICogZmFjdChuIC0gcikpOwp9CgppbnQgbWFpbih2b2lkKQp7CiAgICBwcmludGYoIjVDMiA9ICVkXG4iLCBjb21iKDUsIDIpKTsKICAgIHByaW50ZigiNkMzID0gJWRcbiIsIGNvbWIoNiwgMykpOwogICAgcHJpbnRmKCI3QzQgPSAlZFxuIiwgY29tYig3LCA0KSk7CgogICAgcmV0dXJuIDA7Cn0K