#include <stdio.h>
// 階乗を求める関数
int kaijo(int n) {
int result = 1;
for (int 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+CgovLyDpmo7kuZfjgpLmsYLjgoHjgovplqLmlbAKaW50IGthaWpvKGludCBuKSB7CiAgICBpbnQgcmVzdWx0ID0gMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIHJlc3VsdCAqPSBpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfQoKLy8g57WE5ZCI44Gb44KS5rGC44KB44KL6Zai5pWwCmludCBjb21iKGludCBtLCBpbnQgaykgewogICAgcmV0dXJuIGthaWpvKG0pIC8gKGthaWpvKGspICoga2Fpam8obSAtIGspKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbSwgazsKCiAgICAvLyDjg6bjg7zjgrbjg7zlhaXlipsKICAgIHByaW50ZigibeOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhDolZFxuIiAsbSk7CiAgICBzY2FuZigiJWQiLCAmbSk7CiAgICBwcmludGYoImvjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYQ6JWRcbiIgLGspOwogICAgc2NhbmYoIiVkIiwgJmspOwoKICAgIC8vIOioiOeul+OBqOe1kOaenOihqOekugogICAgcHJpbnRmKCIlZOWAi+OBruS4reOBi+OCiSVk5YCL44KS5Y+W44KK5Ye644GZ57WE5ZCI44Gb5pWw44Gv44CBJWTpgJrjgorjgafjgZnjgIJcbiIsIG0sIGssIGNvbWIobSwgaykpOwoKICAgIHJldHVybiAwOwp9