Cod sursa(job #944632)

Utilizator heracleRadu Muntean heracle Data 29 aprilie 2013 09:50:12
Problema Lista lui Andrei Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>

using namespace std;
ifstream in ("nrcuv.in");
ofstream out ("nrcuv.out");

int v[27],ap[27],K=0;
char c[27][27];
const int M=104659;

 long long parcurge( long long sum)
{
     long long sum2=0;
    for(int i=0; i<26; i++)
    {
        v[i]=(sum-v[i]);
        sum2=(v[i]+sum2)%M;
    }
    return sum2;
}

int main()
{
    int n,m,i,j;
    bool bun;
    char a,b;
    in>>n>>m;
    for(i=1; i<=m; i++)
    {
        in>>a>>b;
        a=a-97;
        b=b-97;
        bun=1;
        for(j=0; j<ap[a]; j++)
            if(c[a][j]==b)
                bun=0;
        if(bun==1)
        {
            c[a][ap[a]]=b;
            ap[a]++;
        }
        bun=1;
        for(j=0; j<ap[b]; j++)
            if(c[b][j]==a)
                bun=0;
        if(bun==1)
        {
            c[b][ap[b]]=a;
            ap[b]++;
        }
    }
     long long sum=0;

    for(i=0; i<26; i++)
    {
        v[i]=26-ap[i];
        sum=v[i]+sum;
    }
    for(i=2; i<=n-1; i++)
    {
        sum=parcurge(sum%M);
    }
    out<<sum%M;

    return 0;
}