Cod sursa(job #2275524)

Utilizator TyFrostbyteIon Robert-Gabriel TyFrostbyte Data 3 noiembrie 2018 11:44:54
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#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;
}