Pagini recente » tema | Cod sursa (job #452878) | Cod sursa (job #1830526) | Cod sursa (job #2943702) | Cod sursa (job #1378999)
#include <stdio.h>
#define MAX 200
#define MOD 98999
int 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 = 1; 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 = 1; 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);
printf("%d %d %d\n", op, x, y);
if (op == 1) {
fprintf(fout, "%d\n", s[x][y]);
} else {
fprintf(fout, "%d\n", S[x][y]);
}
}
fclose(fin);
fclose(fout);
return 0;
}