Cod sursa(job #2941229)

Utilizator LucaMuresanMuresan Luca Valentin LucaMuresan Data 17 noiembrie 2022 12:47:50
Problema Lista lui Andrei Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

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

#define int long long

const int mod = 104659;
int dp[1001];
bitset<26>ok[26];

signed main()
{
    int n, m;
    in >> n >> m;

    dp[1] = 26;
    dp[2] = 26*26;

    for (int i=0; i<26; i++)
    {
        for (int j=0; j<26; j++)
            ok[i][j] = true;
    }

    int cnt = 0;

    while (m--)
    {
        char a, b;
        in >> a >> b;

        int x = a - 'a', y = b - 'a';
        if (ok[x][y])
            cnt += 2 - (x == y), ok[x][y] = ok[y][x] = false;
    }

    dp[2] -= cnt;

    for (int i=3; i<=n; i++)
        dp[i] = dp[i-2] * ( 26*26-cnt), dp[i] %= mod;
    out << dp[n];

    return 0;
}