Pagini recente » Cod sursa (job #1352868) | Cod sursa (job #2467239) | Cod sursa (job #13063) | Cod sursa (job #630136) | Cod sursa (job #2367751)
#include <fstream>
#include <iostream>
#include <cstring>
#define MOD 104659
using namespace std;
char per[2005][3];
int n, m;
unsigned long long putere(unsigned long long nr, unsigned long long p){
int rez = 1;
if(p == 1)
return nr;
while(p>1){
if(p%2)
rez = (rez * nr) % MOD;
rez = (rez * rez) % MOD;
p/=2;
}
return (unsigned long long)rez;
}
unsigned long long fact(unsigned long long nr){
int rez = 1;
for(int i=0; i<nr; i++)
rez = (rez * (i+1))%MOD;
return (unsigned long long)rez;
}
void inmultire(int a[][27], int rez[][27]){
for(int i=0; i<26; i++)
for(int j=0; j<26; j++)
{
rez[i][j]=0;
for(int k=0; k<26; k++)
rez[i][j] += a[i][k]*a[k][j];
}
return;
}
int rez[27][27], a[27][27];
int main()
{
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
f>>n>>m;
for(int i=0; i<27; i++)
for(int j=0; j<27; j++)
a[i][j]=1;
for(int i=0; i<m; i++){
f>>per[i][0]>>per[i][1];
a[per[i][0]-'a'][per[i][1]-'a'] = a[per[i][1]-'a'][per[i][0]-'a'] = 0;
for(int j=0; j<i; j++)
if((per[j][0] == per[i][0] && per[j][1] == per[i][1]) || (per[j][0] == per[i][1] && per[j][0] == per[i][1])){
m--, i--;
break;
}
}
g<<(fact(26)*putere(fact(26-n)*fact(n)), MOD-2));
return 0;
}