Pagini recente » Cod sursa (job #125586) | Cod sursa (job #1639241) | Cod sursa (job #2760235) | Cod sursa (job #206004) | Cod sursa (job #1880442)
#include<stdio.h>
#define MOD 104659
#define LIT 26
int sol[LIT][2];
int a[LIT][LIT];
int main (){
FILE *in, *out;
in = fopen ("nrcuv.in","r");
out = fopen ("nrcuv.out","w");
int n,m,i,j,act,prev,k,s;
char l1,l2;
fscanf (in,"%d%d",&n,&m);
for (i=1;i<=m;i++){
fscanf (in," ");//citeste enter
l1 = fgetc (in);fscanf (in," ");//citeste spatiu
l2 = fgetc (in);
a[l2-'a'][l1-'a'] = 1;// b NU poate urma dupa a
a[l1-'a'][l2-'a'] = 1;
}
for (i=0;i<LIT;i++)
sol[i][1] = 1;// cate siruri de lung curenta (= 1) se termina in a..z
for (k=2;k<=n;k++){//lung curenta
act = k%2;prev = (k+1)%2;// actual & anterior; poz in vect circ de sol
for (i=0;i<LIT;i++)
sol[i][act] = 0;
for (i=0;i<LIT;i++){
for (j=0;j<LIT;j++){
if (a[i][j] == 0)
sol[i][act] = (sol[i][act] + sol[j][prev])%MOD;
}
}
}
act = n%2;
s = 0;
for (i=0;i<LIT;i++)
s = (s + sol[i][act])%MOD;
fprintf (out,"%d",s);
fclose (in);
fclose (out);
return 0;
}