Cod sursa(job #1753972)

Utilizator stefanst77Luca Stefan Ioan stefanst77 Data 7 septembrie 2016 13:17:48
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>
#define p 100003

using namespace std;
ifstream fin ("spion.in");
ofstream fout ("spion.out");

char a[100007];
int n, t[100007], k;


void CalcK()
{
    int i;
    k=0;
    for (i=0; a[i]!=0; i++)
        if (a[i]=='E') k++;
}

int RidicP(int y, int x)
{
    int prod=1;
    while (x!=0)
    {
        if (x%2==1)
        {
            prod=(1LL*prod*y)%p;
            x--;
        }
        y=(1LL*y*y)%p;
        x/=2;
    }
    return prod;
}

void Generare()
{
    int i;
    t[1]=1;
    for (i=2; i<=n; i++)
        t[i]=(1LL*t[i-1]*i)%p;
}

void Cerinta2()
{
    long long rez;
    Generare();
    rez=(1LL * t[n] * (RidicP(t[k], p-2)) * (RidicP(t[n-k], p-2)) )%p;
    fout << rez << "\n";
}

void Citire()
{
    int nr;
    fin >> nr;
    fin >> a;
    n=strlen(a);
    CalcK();

    if (nr==1)
    {
        fout << k+1 << "\n";
    }
    else
        Cerinta2();
}

int main()
{
    Citire();
    return 0;
}