#include<iostream>
using namespace std;

/* Calcul nombre de combinaisons de k elements pris parmi n, avec fonction */

int combinaison(int n, int k){
  int km, i, C, C2;

  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 << "Integer overflow !" << endl;
      break;
    }
    C /= i;
  }
  return C;
}

int main(){
  int n, k;

  cout << "Entier n ? ";
  cin >> n;
  cout << "Entier k ? ";
  cin >> k;
  cout << "Nombre de combinaisons de " << k << " elements pris parmi " 
       << n << " = " << combinaison(n,k) << endl;
  return 0;
}
