Cod sursa(job #789910)

Utilizator stef1995mmarcu stefan ovidiu stef1995m Data 19 septembrie 2012 21:39:29
Problema Lista lui Andrei Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<iostream>
#include<fstream>
using namespace std;
const int val=96,modul=104659;
int n,m,i,sol[30],stare[30],j,s,suma;
char a,b;
bool list[30][30];
void fact(int x[30],int y[30])
{
	for(i=1;i<=26;i++)
		x[i]=(x[i]*y[i])%modul;
}
void mult(int power)
{
	while(power)
	{
		if(power & 1==1)
			fact(sol,stare);
		fact(stare,stare);
		power>>=1;
	}
}
int main()
{
	freopen("nrcuv.in","r",stdin);
	freopen("nrcuv.out","w",stdout);
	scanf("%d %d\n",&n,&m);
	for(i=1;i<=m;i++)
	{
		scanf("%c %c\n",&a,&b);
		list[a-val][b-val]=true;
		list[b-val][a-val]=true;
	}
	for(i=1;i<=26;i++)
	{
		s=0;
		for(j=1;j<=26;j++)
			s+=list[i][j];
		stare[i]=26-s;
		sol[i]=1;
	}
	mult(n-1);
	for(i=1;i<=26;i++)
		suma+=sol[i];
	if(suma>modul)
		suma-=modul;
	printf("%d\n",suma);
	return 0;
}