Cod sursa(job #1660960)

Utilizator cercVianuCerc Vianu cercVianu Data 23 martie 2016 15:56:27
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <cstdio>

long long N, K;

long long* teamSize;
long long teams;

int main(void) {
  freopen("copii2.in", "r", stdin);
  freopen("copii2.out", "w", stdout);
  long long i, j, k;

  // citirea datelor
  scanf("%lld%lld", &N, &K);

  // calcularea solutiei
  long long n = N - 1;
  long long digits = 0;
  while(n > 0) {
    n /= K;
    digits++;
  }
  teamSize = new long long[K];


  // afisarea solutiei
  long long Kd = 1;
  printf("%lld\n", digits);
  for (long long digit = 0; digit < digits; digit++) {
    for (i = 0; i < K; i++) {
      teamSize[i] = 0;
    }
    for (i = 0; i < N; i++) {
      teamSize[(i / Kd) % K]++;
    }
    teams = 0;
    for (i = 0; i < K; i++) {
      if (teamSize[i] > 0) {
        teams++;
      }
    }
    printf("%lld\n", teams);
    for (i = 0; i < K; i++) {
      if (teamSize[i] > 0) {
        printf("%lld ", teamSize[i]);
        for (j = 0; j < Kd; j++) {
          for (k = Kd * i + j; k < N; k += Kd * K) {
            printf("%lld ", k + 1);
          }
        }
        printf("\n");
      }
    }
    Kd *= K;
  }
  return 0;
}