Pagini recente » Cod sursa (job #1626210) | Cod sursa (job #1657424) | Cod sursa (job #2574945) | Cod sursa (job #702753) | Cod sursa (job #3147345)
#include <stdio.h>
#define magic_sauce inline __attribute__((always_inline))
using ll = long long;
const int MAXN = 200;
const int MOD = 98999;
int s[1 + MAXN][1 + MAXN];
int S[1 + MAXN][1 + MAXN];
magic_sauce int gets( int n, int m ){
if( n < 0 || m < 0 )
return 0;
return s[n][m];
}
magic_sauce int getS( int n, int m ){
if( n < 0 || m < 0 )
return 0;
return S[n][m];
}
int main(){
FILE *fin = fopen( "stirling.in", "r" );
FILE *fout = fopen( "stirling.out", "w" );
int t, type, n, m;
s[0][0] = 1;
for( n = 1 ; n <= MAXN ; n++ )
s[n][0] = ((ll)-(n - 1)) * s[n - 1][0] % MOD;
for( m = 1 ; m <= MAXN ; m++ ){
s[0][m] = 0;
for( n = 1 ; n <= MAXN ; n++ )
s[n][m] = (s[n - 1][m - 1] - ((ll)s[n - 1][m]) * (n - 1)) % MOD;
}
S[0][0] = 1;
for( n = 1 ; n <= MAXN ; n++ )
S[n][0] = 0;
for( m = 1 ; m <= MAXN ; m++ ){
S[0][m] = 0;
for( n = 1 ; n <= MAXN ; n++ )
S[n][m] = (S[n - 1][m - 1] + ((ll)S[n - 1][m]) * m) % MOD;
}
for( fscanf( fin, "%d", &t ) ; t-- ; ){
fscanf( fin, "%d%d%d", &type, &n, &m );
if( type == 1 )
fprintf( fout, "%d\n", s[n][m] );
else
fprintf( fout, "%d\n", S[n][m] );
}
return 0;
}