Pagini recente » Cod sursa (job #3271844) | Cod sursa (job #1219749) | Cod sursa (job #2682946) | Istoria paginii runda/marinela | Cod sursa (job #2275524)
#include <iostream>
#include <fstream>
#include <string>
#define MOD 100003
using namespace std;
ifstream fin("spion.in");
ofstream fout("spion.out");
int factorial(int i) {
if (i == 0)
return 1;
return i * factorial(i - 1);
}
int rise(int a, int p) {
int rez = 1;
while (p) {
if (p & 1)
rez = (1LL * rez*a) % MOD;
a = (1LL * a*a);
p >>= 1;
}
return rez;
}
int inv(int x) {
return rise(x, MOD - 2);
}
int main() {
int p;
string s;
fin >> p >> s;
if (p == 1) {
int easternCounter = 0;
for (char c : s)
if (c == 'E')
easternCounter++;
fout << easternCounter + 1;
}
else {
int east = 0;
int west = 0;
for (char c : s)
(c == 'E') ? east++ : west++;
fout << factorial(s.length())*inv(factorial(east)*factorial(west));
}
return 0;
}