Pagini recente » Cod sursa (job #1519637) | Cod sursa (job #502404) | Cod sursa (job #1112676) | Cod sursa (job #1679899) | Cod sursa (job #3230169)
#include <stdio.h>
#include <stdlib.h>
#define NRL 26
#define MOD 104659
int dp[NRL], v[NRL];//in dp[i] este numarul de cuvinte care se termina cu litera i
char f[NRL][NRL];
int main()
{
FILE *fin, *fout;
int n, m, i, j, k, nr;
char ch, ch1;
fin = fopen("nrcuv.in", "r");
fscanf(fin, "%d%d ", &n, &m);
for (i = 0; i < m; i++) {
ch = fgetc(fin) - 'a';
fgetc(fin);
ch1 = fgetc(fin) - 'a';
fgetc(fin);
f[ch][ch1] = f[ch1][ch] = 1;
}
fclose(fin);
for (i = 0; i < NRL; i++) {
dp[i] = 1;
}
for (i = 2; i <= n; i++) {
for (j = 0; j < NRL; j++) {
for (k = 0; k < NRL; k++) {
if (f[k][j] == 0) {//ultima litera este j si penultima este k
v[j] += dp[k];
}
}
}
for (j = 0; j < NRL; j++) {
dp[j] = v[j] % MOD;
v[j] = 0;
}
}
nr = 0;
for (i = 0; i < NRL; i++) {
nr = (nr + dp[i]) % MOD;
}
fout = fopen("nrcuv.out", "w");
fprintf(fout, "%d\n", nr);
fclose(fout);
return 0;
}