Pagini recente » Cod sursa (job #65144) | Cod sursa (job #227279) | Cod sursa (job #1215720) | Cod sursa (job #1590622) | Cod sursa (job #1466175)
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
#define MOD 104659
#define SIGMA 26
char invalid[SIGMA][SIGMA];
int d[MAX_LEN][SIGMA]; // d[i][j] = numarul de siruri de lungime i care se termina in j
int main(void) {
FILE *f = fopen("nrcuv.in", "r");
int n, m;
int i, j;
char a, b;
fscanf(f, "%d%d", &n, &m);
for (i = 0; i < m; i++) {
fscanf(f, "\n%c %c", &a, &b);
invalid[a - 'a'][b - 'a'] = invalid[b - 'a'][a - 'a'] = 1;
}
fclose(f);
for (a = 0; a < SIGMA; a++) {
d[0][a] = 1;
}
for (i = 1; i < n; i++) {
for (a = 0; a < SIGMA; a++) {
for (b = 0; b < SIGMA; b++) {
if (!invalid[a][b]) {
d[i][a] += d[i - 1][b];
d[i][a] %= MOD;
}
}
}
}
i = 0;
for (a = 0; a < SIGMA; a++) {
i += d[n - 1][a];
i %= MOD;
}
f = fopen("nrcuv.out", "w");
fprintf(f, "%d\n", i);
fclose(f);
return 0;
}