Pagini recente » Cod sursa (job #1587764) | Istoria paginii runda/wellcodesimulare2martieclasa11-12/clasament | Cod sursa (job #1037079) | Cod sursa (job #1768091) | Cod sursa (job #1887777)
#include <stdio.h>
#define N 1000
#define L 150
#define mod 104659
int n,m,i,j;
int d[N][L],v[L]; ///d[i][j]=nr de cuvinte de n litere care se pot forma cu primele j cifre; v['a']=cate litere pot sa stea langa 'a'
bool p[L][L];
char a,b;
int main()
{
FILE *f1,*f2;
f1=fopen("nrcuv.in","r");
f2=fopen("nrcuv.out","w");
fscanf(f1,"%d%d\n",&n,&m);
for(i='a';i<='z';i++)
{
v[i]=26;
d[1][i]=1;
}
for(i=0;i<m;i++)
{
fscanf(f1,"%c %c\n",&a,&b);
if(!p[a][b])
{
p[a][b]=p[b][a]=true;
if(a==b)
v[a]--;
else
{
v[a]--;
v[b]--;
}
}
}
for(i=2;i<=n;i++)
for(j='a';j<='z';j++)
{
d[i][j]=d[i-1][j]*v[j];
if(d[i][j]>=mod)
d[i][j]-=mod;
}
long long sol=0;
for(i='a';i<='z';i++)
sol+=d[n][i];
fprintf(f2,"%lld\n",sol%mod);
return 0;
}