#include int combination(int n, int k); int cmb(int n, int k); int main(void){ int n, k; printf("nCkの組み合わせを求めます\n"); printf("n?>>"); scanf("%d", &n); printf("k?>>"); scanf("%d", &k); printf("nCkの答えは、%dです。", combination(n, k)); return 0; } int combination(int n, int k){ int ans,ans2; if (k < 0 || n < 0 || k > n){ ans = 0; } else if (k == 0 || k == n){ ans = 1; } else{ n--; k--; ans = cmb(n, k) + cmb(n, k++); } return ans; } int cmb(int n, int k){ double ans; double i, k1 = 1, k2 = 1, k3 = 1; for (i = k; i > 1; i--){ k2 *= i; } // n-r ! for (i = (n - k); i > 1; i--){ k3 *= i; } for (i = n; i > 1; i--){ k1 *=i; } ans = k1 / (k2*(k3)); return ans; }