Cod sursa(job #628955)

Utilizator sebii_cSebastian Claici sebii_c Data 2 noiembrie 2011 14:09:10
Problema Lista lui Andrei Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#define NMAX 1005
#define MOD 104659

int viz[27][27], res[NMAX][NMAX];

int power(int base, int exp)
{
    int res = 1, i;
    for (i=0; (1<<i) <= exp; ++i) {
	if (((1<<i)&exp) > 0)
	    res = (res*base)%MOD;
	base = (base*base)%MOD;
    }
    return res;
}

int main()
{
    int n, m;
    freopen("nrcuv.in", "r", stdin);
    freopen("nrcuv.out", "w", stdout);
    int i, j, k, sum=0;
    char a, b;
    
    scanf("%d %d\n", &n, &m);
    for (i=1; i<=m; ++i) {
	scanf("%c %c\n", &a, &b);
	viz[a-97][b-97] = 1;
	viz[b-97][a-97] = 1;
    }
   
    for (i=0; i<26; ++i)
	res[1][i] = 1;

    for (i=1; i<=n; ++i)
	for (j=0; j<26; ++j)
	    for (k=0; k<26; ++k)
		if (!viz[j][k]) 
		    res[i+1][k] = (res[i][j] + res[i+1][k])%MOD;

    for (j=0; j<26; ++j)
	sum = (sum + res[n][j])%MOD;

    printf("%d\n", sum);
    return 0;
}