Pagini recente » Cod sursa (job #2593503) | Cod sursa (job #799058) | Cod sursa (job #607380) | Cod sursa (job #2821197) | Cod sursa (job #1498488)
#include <bits/stdc++.h>
using namespace std;
const int Nmax = 200;
const int MOD = 98999;
int s1[Nmax + 1][Nmax + 1];
int s2[Nmax + 1][Nmax + 1];
int s(int n, int m)
{
if ( !n || !m || ( n < m ) )
return 0;
if ( n == 1 && m == 1 )
return 1;
if ( s1[n][m] )
return s1[n][m];
return s1[n][m] = (s(n - 1, m - 1) - (n - 1) * s(n - 1, m)) % MOD;
}
int S(int n, int m)
{
if ( !n || !m || ( n < m ) )
return 0;
if ( n == 1 && m == 1 )
return 1;
if ( s2[n][m] )
return s2[n][m];
return s2[n][m] = (S(n - 1, m - 1) + m * S(n - 1, m)) % MOD;
}
int main()
{
ifstream in("stirling.in");
ofstream out("stirling.out");
in.tie(0);
ios_base::sync_with_stdio(0);
int T, kind, n, m;
in >> T;
while ( T-- )
{
in >> kind >> n >> m;
if ( kind == 1 )
out << s(n, m) << '\n';
else
out << S(n, m) << '\n';
}
in.close();
out.close();
return 0;
}