Cod sursa(job #1200640)

Utilizator hrazvanHarsan Razvan hrazvan Data 23 iunie 2014 10:55:03
Problema Lista lui Andrei Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#define LIT 26
#define MOD 104659
#define MAXN 1000
char nbn[LIT][LIT];
int tab[MAXN + 1][LIT];

int main(){
  FILE *in = fopen("nrcuv.in", "r");
  int n, m;
  fscanf(in, "%d%d ", &n, &m);
  int i, a, b;
  for(i = 0; i < m; i++){
    a = fgetc(in);  fgetc(in);
    b = fgetc(in);  fgetc(in);
    nbn[a - 'a'][b - 'a'] = 1;
    nbn[b - 'a'][a - 'a'] = 1;
  }
  fclose(in);
  for(i = 0; i < 26; i++) tab[1][i] = 1;
  int j, k;
  for(i = 1; i < n; i++){
    for(j = 0; j < 26; j++){
      for(k = 0; k < 26; k++){
        if(!nbn[j][k]){
          tab[i + 1][k] += tab[i][j];
          tab[i + 1][k] %= MOD;
        }
      }
    }
  }
  int rez = 0;
  for(i = 0; i < 26; i++){
    rez += tab[n][i];
    rez %= MOD;
  }
  FILE *out = fopen("nrcuv.out", "w");
  fprintf(out, "%d", rez);
  fclose(out);
  return 0;
}