Cod sursa(job #2100443)

Utilizator rares1012Rares Cautis rares1012 Data 5 ianuarie 2018 17:28:35
Problema Lista lui Andrei Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>
#define Q 104659

int v[26][26];

int val[26][1001];

int calc(int lit,int len){
    int i,s=0;
    if(val[lit][len]!=0)
        return val[lit][len];
    for(i=0;i<26;i++)
        if(v[lit][i]==0)
            s+=calc(i,len-1);
    s%=Q;
    val[lit][len]=s;
    return s;
}

int main()
{
    int n,m,s=0,i;
    char a,b;
    FILE*fi,*fo;
    fi=fopen("nrcuv.in","r");
    fo=fopen("nrcuv.out","w");
    fscanf(fi,"%d%d",&n,&m);
    for(i=0;i<m;i++)
    {
        fgetc(fi);
        a=fgetc(fi);
        fgetc(fi);
        b=fgetc(fi);
        a-='a';
        b-='a';
        v[a][b]=1;
        v[b][a]=1;
    }
    for(i=0;i<26;i++)
        val[i][1]=1;
    for(i=0;i<26;i++)
        s+=calc(i,n);
    fprintf(fo,"%d",s%Q);
    fclose(fi);
    fclose(fo);
    return 0;
}