#include <stdio.h>
// 階乗を計算する関数
int factorial(int n) {
int result = 1;
for(int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
// 組合せを計算する関数
int comb(int m, int k) {
return factorial(m) / (factorial(k) * factorial(m - k));
}
int main() {
int m, k;
printf("mとkの値を入力してください(mは12以下): ");
if(m <= 12 && k <= m && k >= 0) {
int result = comb(m, k);
printf("%d個の中から%d個を取り出す組合せは %d 通りです。\n", m
, k
, result
); } else {
printf("不正な入力です。mは12以下、0 <= k <= m にしてください。\n"); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDpmo7kuZfjgpLoqIjnrpfjgZnjgovplqLmlbAKaW50IGZhY3RvcmlhbChpbnQgbikgewogICAgaW50IHJlc3VsdCA9IDE7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIHJlc3VsdCAqPSBpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfQoKLy8g57WE5ZCI44Gb44KS6KiI566X44GZ44KL6Zai5pWwCmludCBjb21iKGludCBtLCBpbnQgaykgewogICAgcmV0dXJuIGZhY3RvcmlhbChtKSAvIChmYWN0b3JpYWwoaykgKiBmYWN0b3JpYWwobSAtIGspKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbSwgazsKCiAgICBwcmludGYoIm3jgahr44Gu5YCk44KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GE77yIbeOBrzEy5Lul5LiL77yJOiAiKTsKICAgIHNjYW5mKCIlZCAlZCIsICZtLCAmayk7CgogICAgaWYobSA8PSAxMiAmJiBrIDw9IG0gJiYgayA+PSAwKSB7CiAgICAgICAgaW50IHJlc3VsdCA9IGNvbWIobSwgayk7CiAgICAgICAgcHJpbnRmKCIlZOWAi+OBruS4reOBi+OCiSVk5YCL44KS5Y+W44KK5Ye644GZ57WE5ZCI44Gb44GvICVkIOmAmuOCiuOBp+OBmeOAglxuIiwgbSwgaywgcmVzdWx0KTsKICAgIH0gZWxzZSB7CiAgICAgICAgcHJpbnRmKCLkuI3mraPjgarlhaXlipvjgafjgZnjgIJt44GvMTLku6XkuIvjgIEwIDw9IGsgPD0gbSDjgavjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiIpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==