Mai intai trebuie sa te autentifici.
Cod sursa(job #2641118)
| Utilizator | Data | 10 august 2020 10:42:58 | |
|---|---|---|---|
| Problema | Numerele lui Stirling | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.85 kb |
#include <fstream>
#define N 205
#define MOD 98999
using namespace std;
ifstream cin("stirling.in");
ofstream cout("stirling.out");
int S[N][N], s[N][N], m;
void precalculare_s()
{
s[1][1]= 1;
for( int i=2 ; i<N ; ++i )//precalculam pana la limita maxima
for( int j=1 ; j<=i ; ++j )//pentru j>i s(i,j)=0 pentru ca ciclurile au cel putin un element
s[i][j]= ( s[i-1][j-1] - (i-1)*s[i-1][j] )%MOD ;
}
void precalculare_S()
{
S[1][1]= 1;
for( int i=2 ; i < N ; ++i )
for( int j=1 ; j <=i ; ++j )
S[i][j]= ( S[i-1][j-1] + j*S[i-1][j] )%MOD;
}
int main()
{
int t, speta, n, m;
cin >> t;
precalculare_s();
precalculare_S();
for(int i = 1 ; i <= t ; i++)
{
cin >> speta >> n >> m;
if(speta==1)
cout << s[n][m] << '\n';
if(speta==2)
cout << S[n][m] << '\n';
}
}
