Pagini recente » Cod sursa (job #303884) | Cod sursa (job #248264) | Cod sursa (job #594463) | Cod sursa (job #3202638) | Cod sursa (job #2186616)
#include <fstream>
#include <algorithm>
#define mp make_pair
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
pair<char,char> cuvinte[2500];
long long int ridPut(long long int a,long long int b){
a %= 104659;
if(b == 0) return 1;
else if(b == 1) return a;
else if(b%2 == 0) return (ridPut(a*a,b/2)) % 104659;
else if(b%2 == 1) return (a*(ridPut(a*a,(b-1)/2))) % 104659;
}
int main(){
int n,m;
fin>>n>>m;
long long int scadere = ridPut(26,n);
char a,b,i;
for(i = 1; i <= m; i++){
fin>>a>>b;
if(a > b) swap(a,b);
cuvinte[i] = mp(a,b);
}
sort(cuvinte+1,cuvinte+1+m);
a = '1';
int counter=0;
for(i = 1; i <= m; i++){
a = cuvinte[i].first;
b = cuvinte[i].second;
if(i+1 <= m){
if(a != cuvinte[i+1].first || b != cuvinte[i+1].second){
if(a == b) counter++;
else counter += 2;
}
}
else{
if(a == b) counter++;
else counter += 2;
}
}
fout<<(scadere-counter) % 104659;
}