Pagini recente » Cod sursa (job #1013777) | Cod sursa (job #2975006) | Cod sursa (job #1564951) | Cod sursa (job #522794) | Cod sursa (job #3240571)
#include <iostream>
#include <fstream>
#define MOD 98999
using namespace std;
int s[256][256], S[256][256];
int main() {
ifstream fin("stirling.in");
ofstream fout("stirling.out");
int T, i, j, op, N=0, M=0;
fin >> T;
int t[1000][3];
for(i=0; i<T; ++i) {
fin >> t[i][0] >> t[i][1] >> t[i][2];
N = max(N, t[i][1]);
M = max(M, t[i][2]);
}
S[0][0] = 1;
for(i=1; i<=N; ++i) {
S[i][0] = 0;
}
for(i=1; i<=M; ++i) {
S[0][i] = 0;
}
for(i=1; i<=N; ++i) {
for(j=1; j<=M; ++j) {
S[i][j] = S[i-1][j-1] + j*S[i-1][j];
S[i][j] %= MOD;
}
}
s[0][0] = 1;
for(i=1; i<=N; ++i) {
s[i][0] = 0;
}
for(i=1; i<=M; ++i) {
s[0][i] = 0;
}
for(i=1; i<=N; ++i) {
for(j=1; j<=M; ++j) {
s[i][j] = s[i-1][j-1] - (i-1)*s[i-1][j];
s[i][j] %= MOD;
}
}
for(i=0; i<T; ++i) {
op = t[i][0];
if(op == 1) {
fout << s[t[i][1]][t[i][2]];
} else if(op == 2) {
fout << S[t[i][1]][t[i][2]];
}
fout << '\n';
}
}