Cod sursa(job #2086135)

Utilizator Andrei17Andrei Pascu Andrei17 Data 11 decembrie 2017 15:54:29
Problema Lista lui Andrei Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#define NMAX 1002
#define MOD 104659

using namespace std;

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

int n, m, d[NMAX];
int A[27][27];

int main()
{
    int s = 0;
    char a, b;
    in >> n >> m;
    for (int i = 0; i < m; i++) {
        in >> a >> b;
        if (a != b) {
            if (A[a - 'a' + 1][b - 'a' + 1] == 0) {
                A[a - 'a' + 1][b - 'a' + 1]++;
                A[b - 'a' + 1][a - 'a' + 1]++;
            }
            if (A[a - 'a' + 1][b - 'a' + 1] == 1) {
                A[a - 'a' + 1][b - 'a' + 1]++;
                A[b - 'a' + 1][a - 'a' + 1] = 0;
            }
        }
        else {
            if (A[a - 'a' + 1][b - 'a' + 1] == 0) {
                A[a - 'a' + 1][b - 'a' + 1]++;
            }
        }
    }
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= m; j++) {
            s += A[i][j];
        }
    }
    d[0] = 1;
    d[1] = 26;
    for (int i = 2; i <= n; i++) {
        d[i] = ((26 * d[i - 1]) % MOD) - s * (i - 1);
    }
    out << d[n];
    return 0;
}