Cod sursa(job #148743)

Utilizator marinMari n marin Data 4 martie 2008 19:44:16
Problema Lista lui Andrei Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#define MOD 104659

int a[27][27];
int v[1002][27];
int n,m,i,j,k,s;
char x,y;


int main(){
//  printf("%d",'z'-'a');
  FILE *f = fopen("nrcuv.in","r");
  fscanf(f,"%d %d",&n,&m);
  for (i=0;i<2*m;){
    fscanf(f,"%c",&x);
    if ((x>='a')&&(x<='z')) {
      i++;
      if (i%2==0) {
	a[x-'a'][y-'a']=a[y-'a'][x-'a']=1;
      }
      y=x;
    }
  }
  fclose(f);

  for (i=0;i<26;i++){
    v[1][i]=1;
  }

  for (i=2;i<=n;i++) {
    for (j=0;j<26;j++) {
      s = 0;
      for (k=0;k<26;k++)
	if (a[k][j]==0)
	  s=((s+v[i-1][k])%MOD);
      a[i][j]=s;
    }
  }
  s=0;
  for (i=0;i<26;i++)
    s = ((s+a[n][i])%MOD);
  FILE *g = fopen("nrcuv.out","w");
  fprintf(g,"%d",s);
  fclose(g);
  return 0;
}