Cod sursa(job #2980739)

Utilizator moldovan_robert_lolMoldovan Robert moldovan_robert_lol Data 16 februarie 2023 19:36:26
Problema Numerele lui Stirling Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <utility>
#include <algorithm>

std::ifstream fin("stirling.in");
std::ofstream fout("stirling.out");

const int MOD = 98999;
int q;
int dp[2][205][205];

void preprocess() {
	dp[0][0][0] = dp[1][0][0] = 1;
	for (int n = 1; n <= 200; n++) {
		//dp[1][n][1] = dp[1][n][n] = 1;
		for (int k = 1; k <= n; k++) {
			dp[0][n][k] = 1LL*(n-1)*dp[0][n-1][k]%MOD+dp[0][n-1][k-1];
			dp[0][n][k] %= MOD;
			dp[1][n][k] = 1LL*k*dp[1][n-1][k]%MOD+dp[1][n-1][k-1];
			dp[1][n][k] %= MOD;
			std::cerr << dp[0][n][k] << " ";
		}
		std::cerr << "\n";
	}
}

int main() {
	preprocess();
	fin >> q;
	for (int op, n, k; q--;) {
		fin >> op >> n >> k;
		fout << dp[op-1][n][k]*((op==1)?(((n-k)&1)?-1:1):1) << "\n";
	}
}