Cod sursa(job #1236970)

Utilizator somuBanil Ardej somu Data 2 octombrie 2014 22:12:33
Problema Lista lui Andrei Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;

#define nmax 27
#define MOD 104659

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

int n, m, i, j, rez;
char a, b;
int A[nmax][nmax];

void citire()
{
    fin >> n >> m;
    
    for (i=1; i<=26; i++)
        for (j=1; j<=26; j++)
            A[i][j] = 1;
    
    for (i=1; i<=m; i++)
    {
        fin >> a >> b;
        A[int(a - 'a')+1][int(b - 'a')+1] = 0;
        A[int(b - 'a')+1][int(a - 'a')+1] = 0;
    }
    
}

int log(int x, int k)
{
    if (k==1){
        return x;
    }
    if (k % 2 == 0)
        return log(x, k/2) * log(x, k/2) % MOD;
    else
        return x * log(x, k/2) * log(x, k/2) % MOD;
}

void solve()
{
    
    for (i=1; i<=26; i++)
        for (j=1; j<=26; j++)
            if (A[i][j] == 1)
                A[i][j] = log(2, n-1) % MOD,
                rez += A[i][j] % MOD;
    
    fout << rez / 2 << "\n";
    
}

int main()
{
    
    citire();
    solve();
    
    fin.close();
    fout.close();
    
    return 0;
}