Cod sursa(job #608064)

Utilizator vlad.maneaVlad Manea vlad.manea Data 14 august 2011 20:26:07
Problema Numerele lui Stirling Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#define INFILE "stirling.in"
#define OUTFILE "stirling.out"
#define NMax 256
#define ModP 98999

int S[NMax][NMax], s[NMax][NMax];

using namespace std;

void preprocess()
{
	// cazuri elementare
	S[0][0] = s[0][0] = 1;

	// caz general
	for (int n = 1; n < NMax; ++n)
		for (int k = 1; k < NMax; ++k)
		{
			s[n][k] = S[n - 1][k - 1] + (n - 1) * S[n - 1][k] % ModP;
			S[n][k] = S[n - 1][k - 1] + k * S[n - 1][k] % ModP;
		}
}

int main()
{
	// hai acasa
	preprocess();

	freopen(INFILE, "r", stdin);
	freopen(OUTFILE, "w", stdout);

	int Q, v, n, m;
	scanf("%d", &Q);

	// raspund la intrebari [cred :)]
	while (Q--)
	{
		scanf("%d%d%d", &v, &n, &m);
		
		if (v & 1)
			printf("%d\n", (n - m) % 2? -s[n][m]: s[n][m]);
		else
			printf("%d\n", S[n][m]);
	}

	return 0;
}