#include<iostream>
using namespace std;

/* Calcul nombre de combinaisons de k elements pris parmi n */

int main(){
  int n, k, km, i, C, C2;

  cout << "Entier n ? ";
  cin >> n;
  cout << "Entier k ? ";
  cin >> k;
  if (k > n-k)
    km = n-k;
  else
    km = k;
  C = 1;
  for (i = 1; i <= km; i++){
    C2 = C;
    C *= (n-i+1);
    if (C/C2 != n-i+1){
      cout << "Entier trop grand !" << endl;
      break;
    }
    C /= i;
    // A noter : C=C*(n-i+1)/i (correct) et C*=(n-i+1)/i (faux)
    // ou C=C*((n-i+1)/i) (faux) ne sont pas equivalents a cause de
    // la division d'entiers !
  }
  if (i > km)
    cout << "Nombre de combinaisons de " << k << " elements pris parmi " 
	 << n << " = " << C << endl;
  return 0;
}
