Cod sursa(job #1378980)

Utilizator BonCipBonciocat Ciprian Mircea BonCip Data 6 martie 2015 15:23:34
Problema Numerele lui Stirling Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>
#define MAX 200
#define MOD 98999

long long s[MAX + 1][MAX + 1], S[MAX + 1][MAX + 1];

void preproc()
{
	// Stirling (I)
	s[1][1] = 1;
	for (int i = 2; i <= MAX; ++i) {
		for (int j = i; j <= i; ++j) {
			s[i][j] = (s[i - 1][j - 1] - (i - 1) * s[i - 1][j]) % MOD;
		}
	}
	// Stirling (II)
	S[1][1] = 1;
	for (int i = 2; i <= MAX; ++i) {
		for (int j = i; j <= i; ++j) {
			S[i][j] = (S[i - 1][j - 1] + j * S[i - 1][j]) % MOD;
		}
	}
}

int main()
{
	FILE *fin, *fout;
	fin = fopen("stirling.in", "r");
	fout = fopen("stirling.out", "w");

	preproc();

	int T;
	fscanf(fin, "%d", &T);

	int i;
	for (i = 0; i < T; ++i) {
		int op, x, y;
		fscanf(fin, "%d%d%d", &op, &x, &y);
		fprintf(fout, "%lld\n", op == 1 ? s[x][y] : S[x][y]);
	}

	fclose(fin);
	fclose(fout);
	return 0;
}