Pagini recente » Cod sursa (job #2081466) | Cod sursa (job #1433886) | Stelele Informaticii 2009, clasele 9-10, ziua 1 | Cod sursa (job #2251436) | Cod sursa (job #2090335)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in ("spion.in");
ofstream out ("spion.out");
long long mod=100003,fact[100003];
long long lgput(long long a, long long b)
{
long long rest=1;
while (b>1)
{
if(b%2==0)
{
a=(a*a)%mod;
b=b/2;
}
else
{
rest=(rest*a)%mod;
b=(b-1);
}
}
a=a*rest;
return a%mod;
}
void factorial (long long a)
{
int i;
fact[1]=1;
for (i=2; i<=a; i++)
fact[i]=(i*fact[i-1])%mod;
}
long long combinari (long long a, long long b)
{
long long x,y;
x=lgput((fact[b]),mod-2)%mod;
y=lgput(fact[a-b],mod-2)%mod;
if (a==b)return 0;
return fact[a]*x*y;
}
int main()
{
long long i,t,k=0,n=0;
char s[100003];
in>>t;
in.ignore();
in.get(s,100003);
for (i=0; i<strlen(s); i++)
{
if (s[i]=='E')
k++;
n++;
}
if (t==1)
out<<k+1;
if (t==2)
{
factorial(n);
out<<combinari(n,k)%mod;
}
return 0;
}