Cod sursa(job #2611031)

Utilizator anabatAna Batrineanu anabat Data 6 mai 2020 10:20:03
Problema Lista lui Andrei Scor 55
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <stdlib.h>

#define NMAX 1000
#define MOD 104659

int ok[NMAX+1][NMAX+1],d[27][NMAX+1];

int main()
{
  FILE *fin,*fout;
  fin=fopen("nrcuv.in","r");
  fout=fopen("nrcuv.out","w");

  int n,m,i,j,nr,c;
  char a;
  char b;
  fscanf(fin,"%d%d\n",&n,&m);
  for(i=1;i<=m;i++){
    a=fgetc(fin);
    fgetc(fin); ///spatiu
    b=fgetc(fin);
    ok[a][b]=ok[b][a]=1; ///marcam perechile interzise
    fgetc(fin); ///\n
  }
  for(j='a';j<='z';j++){ ///initializare
    d[1][j]=1;
  }
  for(i=2;i<=26;i++){
    for(j='a';j<='z';j++){
      for(c='a';c<='z';c++){
        if(ok[j][c]!=1){
          d[i][j]=(d[i][j]%MOD+d[i-1][c]%MOD)%MOD;
        }
      }
    }
  }
  nr=0;
  for(j='a';j<='z';j++){
    nr=(nr%MOD+d[n][j]%MOD)%MOD;
  }
  fprintf(fout,"%d",nr%MOD);

  fclose(fin);
  fclose(fout);
  return 0;
}