Cod sursa(job #1335564)

Utilizator hrazvanHarsan Razvan hrazvan Data 5 februarie 2015 18:15:49
Problema Koba Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#define MAXNR 999
int sum[MAXNR + 3], poz[MAXNR + 1];

int main(){
  FILE *in = fopen("koba.in", "r");
  int a, b, c, d, n, i, x;
  fscanf(in, "%d%d%d%d", &n, &c, &b, &a);
  a %= 10;
  b %= 10;
  c %= 10;
  fclose(in);
  for(i = 0; i <= MAXNR; i++)
    poz[i] = -1;
  sum[0] = c;
  sum[1] = c + b;
  i = 2;
  x = a * 100 + b * 10 + c;
  while(poz[x] == -1){
    poz[x] = i;
    sum[i] = sum[i - 1] + a;
    d = (c * b + a) % 10;
    c = b;
    b = a;
    a = d;
    x = a * 100 + b * 10 + c;
    i++;
  }
  FILE *out = fopen("koba.out", "w");
  int rez = 0, rest, pers = poz[x], perf = i - 1;
  if(n - 1 <= perf)
    rez = sum[n - 1];
  else{
    rez += sum[pers - 1] + (sum[perf] - sum[pers - 1]) * ((n - pers) / (perf - pers + 1));
    rest = (n - pers) % (perf - pers + 1) - 1;
    if(rest >= 0)
      rez += sum[pers + rest] - sum[pers - 1];
  }
  fprintf(out, "%d", rez);
  fclose(out);
  return 0;
}