Cod sursa(job #2638791)

Utilizator euyoTukanul euyo Data 29 iulie 2020 21:02:47
Problema Sandokan Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream> 

using namespace std;

ifstream fin( "sandokan.in" );
ofstream fout( "sandokan.out" );

const int MaxN = 5001;

long long comb[MaxN][2];

int NchooseK( int n, int k ) {   
  int t = 0;
  for ( int i = 1; i <= n; ++i ) {
	comb[0][1 - t] = 1;
    for ( int j = 1; j <= k; ++j ) {
	  comb[j][t] = comb[j][1 - t] + comb[j - 1][1 - t];
	}
    t = 1 - t;
  }
  if ( n == 0 ) {
	return 1;
  }
  return comb[k][1 - t];
}

int main() {
  int n, k, cp, c;

  fin >> n >> k;
  cp = k;
  c = n;
  while ( n >= k ) {
	n = n / k + n % k;
  }
  k = n;
  n = c - cp;
  fout << NchooseK( n, k );
  fin.close();
  fout.close();
  return 0;
}