#include <stdio.h>
// 階乗を求める関数
int kaijo(int n) {
int i, result = 1;
for(i = 1; i <= n; i++) {
result *= i;
}
return result;
}
// 組合せを求める関数
int comb(int m, int k) {
return kaijo(m) / (kaijo(k) * kaijo(m - k));
}
int main() {
int m, k;
printf("%d個の中から%d個を取り出す組合せ数は、%d通りです。\n", m
, k
, comb
(m
, k
));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDpmo7kuZfjgpLmsYLjgoHjgovplqLmlbAKaW50IGthaWpvKGludCBuKSB7CiAgICBpbnQgaSwgcmVzdWx0ID0gMTsKICAgIGZvcihpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICByZXN1bHQgKj0gaTsKICAgIH0KICAgIHJldHVybiByZXN1bHQ7Cn0KCi8vIOe1hOWQiOOBm+OCkuaxguOCgeOCi+mWouaVsAppbnQgY29tYihpbnQgbSwgaW50IGspIHsKICAgIHJldHVybiBrYWlqbyhtKSAvIChrYWlqbyhrKSAqIGthaWpvKG0gLSBrKSk7Cn0KCmludCBtYWluKCkgewogICAgaW50IG0sIGs7CiAgICBwcmludGYoIm3jgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTvvJoiKTsKICAgIHNjYW5mKCIlZCIsICZtKTsKCiAgICBwcmludGYoImvjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTvvJoiKTsKICAgIHNjYW5mKCIlZCIsICZrKTsKCiAgICBwcmludGYoIiVk5YCL44Gu5Lit44GL44KJJWTlgIvjgpLlj5bjgorlh7rjgZnntYTlkIjjgZvmlbDjga/jgIElZOmAmuOCiuOBp+OBmeOAglxuIiwgbSwgaywgY29tYihtLCBrKSk7CgogICAgcmV0dXJuIDA7Cn0K