Cod sursa(job #2367751)

Utilizator AntoniuFicAntoniu Ficard AntoniuFic Data 5 martie 2019 12:04:53
Problema Lista lui Andrei Scor 0
Compilator cpp-64 Status done
Runda bv_10 Marime 1.47 kb
#include <fstream>
#include <iostream>
#include <cstring>
#define MOD 104659
using namespace std;

char per[2005][3];
int n, m;

unsigned long long putere(unsigned long long nr, unsigned long long p){
    int rez = 1;
    if(p == 1)
        return nr;
    while(p>1){
        if(p%2)
            rez = (rez * nr) % MOD;
        rez = (rez * rez) % MOD;
        p/=2;
    }
    return (unsigned long long)rez;
}

unsigned long long fact(unsigned long long nr){
    int rez = 1;
    for(int i=0; i<nr; i++)
        rez = (rez * (i+1))%MOD;
    return (unsigned long long)rez;
}

void inmultire(int a[][27], int rez[][27]){
    for(int i=0; i<26; i++)
        for(int j=0; j<26; j++)
    {
        rez[i][j]=0;
            for(int k=0; k<26; k++)
                rez[i][j] += a[i][k]*a[k][j];

    }
    return;
}
    int rez[27][27], a[27][27];

int main()
{
    ifstream f("nrcuv.in");
    ofstream g("nrcuv.out");
    f>>n>>m;
    for(int i=0; i<27; i++)
        for(int j=0; j<27; j++)
            a[i][j]=1;
    for(int i=0; i<m; i++){
        f>>per[i][0]>>per[i][1];
        a[per[i][0]-'a'][per[i][1]-'a'] = a[per[i][1]-'a'][per[i][0]-'a'] = 0;
        for(int j=0; j<i; j++)
            if((per[j][0] == per[i][0] && per[j][1] == per[i][1]) || (per[j][0] == per[i][1] && per[j][0] == per[i][1])){
                m--, i--;
                break;
            }
    }
    g<<(fact(26)*putere(fact(26-n)*fact(n)), MOD-2));
    return 0;
}