Cod sursa(job #2186648)

Utilizator CozehNita Horia Teodor Cozeh Data 25 martie 2018 20:17:54
Problema Lista lui Andrei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <algorithm>
#define mp make_pair
using namespace std;

ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");

int cuvinte['z'+1]['z'+1];

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[a][b] = 1;
    }
    long long int counter=0,j;
    for(i = 'a'; i <= 'z'; i++){
        for(j = 'a'; j <= 'z'; j++){
            if(cuvinte[i][j] == 1){
                if(i == j) counter++;
                else counter +=2;
            }
            counter %= 104659
        }
    }
    fout<<(scadere-counter) % 104659;
}