Pagini recente » Cod sursa (job #1727692) | Cod sursa (job #628900) | Cod sursa (job #3297470)
#include <stdio.h>
#include <vector>
using ll = long long;
constexpr int MOD = 98999;
const int MAXN = 300;
int first[MAXN + 1][MAXN + 1];
int second[MAXN + 1][MAXN + 1];
void init() {
{// first
first[0][0] = 1;
for( int n = 1; n <= MAXN; n++ )
for( int m = 0; m <= MAXN; m++ ){
first[n][m] = ((m > 0 ? first[n - 1][m - 1] : 0) - (n - 1) * (ll)first[n - 1][m]) % MOD;
}
}
{// second
second[0][0] = 1;
for( int n = 1; n <= MAXN; n++ )
for( int m = 0; m <= MAXN; m++ ){
second[n][m] = ((m > 0 ? second[n - 1][m - 1] : 0) + m * (ll)second[n - 1][m]) % MOD;
}
}
}
int main() {
FILE *fin = fopen( "stirling.in", "r" );
FILE *fout = fopen( "stirling.out", "w" );
init();
int t;
for( fscanf( fin, "%d", &t ); t--; ){
int type, n, m;
fscanf( fin, "%d %d%d", &type, &n, &m );
if( type == 1 )
fprintf( fout, "%d\n", first[n][m] );
else
fprintf( fout, "%d\n", second[n][m] );
}
fclose( fin );
fclose( fout );
return 0;
}