Cod sursa(job #2897592)

Utilizator dahaandreiDaha Andrei Codrin dahaandrei Data 4 mai 2022 09:23:30
Problema Numerele lui Stirling Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 200;
const int MAXT = 1000;
const int MOD = 98999;

int t, speta, n, m;

int s1[MAXN + 2][MAXN + 2], s2[MAXN + 2][MAXN + 2];

void calcS1() {
	s1[1][1] = 1;

	for (int i = 2; i < MAXN; ++ i) {
		for (int j = 1; j <= i; ++ j) {
			s1[i][j] = (s1[i - 1][j - 1] - (i - 1) * s1[i - 1][j]) % MOD;
		}
	}
}

void calcS2(){
	s2[1][1] = 1;

	for (int i = 2; i < MAXN; ++ i) {
		for (int j = 1; j <= i; ++ j) {
			s2[i][j] = (s2[i - 1][j - 1] + j * s2[i - 1][j]) % MOD;
		}
	}

}


int main() {
	freopen("stirling.in", "r", stdin);
	freopen("stirling.out", "w", stdout);

	calcS1();
	calcS2();

	cin >> t;

	while (t --) {
		cin >> speta >> n >> m;

		if (speta == 1)
			cout << s1[n][m] << '\n';
		else
			cout << s2[n][m] << '\n';

	}

	return 0;
}