Cod sursa(job #2296466)

Utilizator dey44andIoja Andrei-Iosif dey44and Data 4 decembrie 2018 18:29:59
Problema Numerele lui Stirling Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

#define MOD 98999
#define input "stirling.in"
#define output "stirling.out"
#define MAT_SIZE 205

using namespace std;

ifstream in(input);
ofstream out(output);

int speta1[MAT_SIZE][MAT_SIZE], speta2[MAT_SIZE][MAT_SIZE];

void Generate()
{
	speta1[1][1] = 1;
	speta2[1][1] = 1;
	for (int i = 2; i <= MAT_SIZE - 5; i++)
	for (int j = 1; j <= i; j++)
	{
		speta1[i][j] = (speta1[i - 1][j - 1] - (i - 1)  * speta1[i - 1][j]) % MOD;
		if (j == 1 || j == i) speta2[i][j] = 1;
		else speta2[i][j] = (speta2[i - 1][j - 1] + j * speta2[i - 1][j]) % MOD;
	}
}

void Solve()
{
	int teste;
	in >> teste;
	for (int i = 1; i <= teste; i++)
	{
		int N, M, task;
		in >> task >> N >> M;
		if (M > N) out << 0 << "\n";
		else
		{
			if (task == 1) out << speta1[N][M] << "\n";
			else out << speta2[N][M] << "\n";
 		}
	}
}


int main()
{
	Generate();
	Solve();
	return 0;
}