Cod sursa(job #3279993)

Utilizator MirceaCUCUSirghe Mircea Anton MirceaCUCU Data 25 februarie 2025 09:51:06
Problema Sandokan Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

#define MOD 9901

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

int frecv[27];
int cmp ( int a, int b )
{
    if ( a == 0 )
        return 0;
    if ( b == 0 )
        return 1;
    return a > b;
}
int main()
{
    int n,i,dif=26,mult=0;
    long long rez=0;
    char c;
    in>>n;
    while(in>>c)
    {
        c=c-'a'+1;
        frecv[c]++;
    }
    sort(frecv+1, frecv+27, cmp);
    for (i=1;i<=26;i++)
    {
        if (frecv[i]>=2)
            mult=i;
        if (frecv[i]==0)
        {
            dif=i-1;
            break;
        }
    }
    if(n-dif>1)
    {
        out<<0;
    }
    else if(dif>=n)
    {
        rez=(mult*n*(n-1)/2)%MOD;
        long long p=1;
        int c=dif-1;
        for (int i=1;i<=n-2;i++)
        {
            p=(p*c)%MOD;
            c--;
        }
        rez=(rez*p)%MOD;
        p=1;
        for (int i=1;i<=n;i++)
        {
            p=(p*dif)%MOD;
            dif--;
        }
        rez=(rez+p)%MOD;
        out<<rez;
    }
    return 0;
}