Cod sursa(job #1680083)

Utilizator andrei_diaconu11Andrei C. Diaconu andrei_diaconu11 Data 8 aprilie 2016 15:05:22
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <ctype.h>
#define MOD 104659
using namespace std;
FILE *fi;
bool l[26][26];
int d[1000][26];

char fgetch(){
    char ch;
    do{
        ch=fgetc(fi);
    }while(isalpha(ch)==0);
    return ch;
}

int main()
{
    int n, m, i, j, y, sum;
    char c1, c2;
    fi=fopen("nrcuv.in", "r");
    FILE *fo=fopen("nrcuv.out", "w");
    fscanf(fi, "%d%d", &n, &m);
    for(i=0;i<m;i++){
        c1=fgetch();
        fgetc(fi);
        c2=fgetch();
        l[c1-'a'][c2-'a']=l[c2-'a'][c1-'a']=true;
    }
    for(i=0;i<26;i++)
        d[0][i]=1;
    for(i=1;i<n;i++)
        for(j=0;j<26;j++)
            for(y=0;y<26;y++)
                if(l[j][y]==false)
                    d[i][j]=(d[i-1][y]+d[i][j])%MOD;
    sum=0;
    for(i=0;i<26;i++)
        sum=(sum+d[n-1][i])%MOD;
    fprintf(fo, "%d", sum);
    fclose(fi);
    fclose(fo);
    return 0;
}