Cod sursa(job #3142198)

Utilizator SSKMFSS KMF SSKMF Data 20 iulie 2023 08:59:00
Problema Lista lui Andrei Scor 35
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
using namespace std;

ifstream cin ("nrcuv.in");
ofstream cout ("nrcuv.out");

int factor[26] , mod = 104659;
bool exclus[26][26];

int Exponentiere (int baza , int exponent)
{
    int rezultat = 1;
    while (exponent)
    {
        if (exponent & 1)
            rezultat = 1LL * rezultat * baza % mod;

        baza = 1LL * baza * baza % mod;
        exponent >>= 1;
    }

    return rezultat;
}

int main ()
{
    int lungime , perechi;
    cin >> lungime >> perechi;

    for (char litere[2] ; perechi ; perechi--)
        cin >> litere[0] >> litere[1] , exclus[litere[0] - 'a'][litere[1] - 'a'] = exclus[litere[1] - 'a'][litere[0] - 'a'] = true;

    int total = 0;
    for (int litera_1 = 0 ; litera_1 < 26 ; litera_1++)
    {
        for (int litera_2 = 0 ; litera_2 < 26 ; litera_2++)
            if (!exclus[litera_1][litera_2]) factor[litera_1]++;

        (total += Exponentiere(factor[litera_1] , lungime - 1)) %= mod;
    }

    cout << total;
    cout.close(); cin.close();
    return 0;
}