Cod sursa(job #3327614)

Utilizator LucaWalucaLuca Munteanu LucaWaluca Data 4 decembrie 2025 16:49:21
Problema Sandokan Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;
ifstream cin("sandokan.in");
ofstream cout("sandokan.out");
long long sol=1;
long long aranj(int n, int k)
{
    long long nr=1;
    for(int i=n-k+1;i<=n;i++)
    {
        nr*=i;
        nr%=9901;
    }
    return nr;
}
int fr[30];
int main()
{
    int n;
    string s;
    cin>>n>>s;
    int nrd=0,nr2=0;
    for(int i=0;i<s.size();i++)
    {
        fr[s[i]-'a'+1]++;
        if(fr[s[i]-'a'+1]==1)
            nrd++;
        if(fr[s[i]-'a'+1]==2)
            nr2++;
    }
    int fact=1,fact2=1;
    for(int i=2;i<=n-2;i++)
    {
        fact*=i;
        fact2*=i;
        fact2%=9901;
        fact%=9901;
    }
    fact*=(n-1);
    fact%=9901;
    fact*=n;
    fact%=9901;
    sol=aranj(nrd,n);
    cout<<sol+(nr2*aranj(nrd-1,n-2)*(fact/(2*fact2)));
    return 0;
}