Cod sursa(job #2611035)

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

#define NMAX 1000
#define MOD 104659

int ok[26][26],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-'a'][b-'a']=ok[b-'a'][a-'a']=1; ///marcam perechile interzise
    fgetc(fin); ///\n
  }
  for(j=0;j<26;j++){ ///initializare
    d[0][j]=1;
  }
  for(i=1;i<26;i++){
    for(j=0;j<26;j++){
      for(c=0;c<26;c++){
        if(ok[j][c]!=1){
          d[i][j]=(d[i][j]%MOD+d[i-1][c]%MOD)%MOD;
        }
      }
    }
  }
  nr=0;
  for(j=0;j<26;j++){
    nr=(nr%MOD+d[n-1][j]%MOD)%MOD;
  }
  fprintf(fout,"%d",nr%MOD);

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