Pagini recente » Cod sursa (job #1409543) | Cod sursa (job #810734) | Cod sursa (job #1333244) | Cod sursa (job #611833) | Cod sursa (job #3309183)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("stirling.in");
ofstream cout("stirling.out");
const int N_MAX = 200, K_MAX = 200, MOD = 98999;
vector<vector<int>> S(N_MAX + 2, vector<int>(K_MAX + 2)); // speta 2
vector<vector<int>> s(N_MAX + 2, vector<int>(K_MAX + 2)); // speta 1
void precalculate_2() {
S[0][0] = 1;
for (int n = 1 ; n <= N_MAX ; ++n) {
for (int k = 1 ; k <= n ; ++k) {
long long current = S[n - 1][k - 1];
current = (current + (1LL * S[n - 1][k] * k) % MOD) % MOD;
S[n][k] = (int)current;
}
}
}
void precalculate_1() {
s[0][0] = 1;
for (int n = 1 ; n <= N_MAX ; ++n) {
for (int k = 1 ; k <= n ; ++k) {
long long current = s[n - 1][k - 1];
current = (current - (1LL * (n - 1) * s[n - 1][k]) % MOD) % MOD;
s[n][k] = (int)current;
}
}
}
int main() {
precalculate_1();
precalculate_2();
int t;
cin >> t;
while (t--) {
int x, n, k;
cin >> x >> n >> k;
if (x == 1) cout << ((k > n) ? 0 : s[n][k]) << "\n";
else cout << ((k > n) ? 0 : S[n][k]) << "\n";
}
return 0;
}