Pagini recente » Cod sursa (job #1357984) | Cod sursa (job #1835214) | Cod sursa (job #2188565) | Cod sursa (job #46178) | Cod sursa (job #2696594)
#include <iostream>
#include <fstream>
#define MOD 98999
using namespace std;
int triunghi1[205][205];
int triunghi2[205][205];
void intitalize(int noTo){
for(int i=0; i<noTo+1; i++){
triunghi1[i][0] = triunghi2[i][0] = 0;
triunghi1[i][i] = triunghi2[i][i] = 1;
}
return;
}
class stirling{
public:
int n, m, x, rez;
void find(){
if(this->x == 1){
this->rez = this->kind1();
return;
}
this->rez = this->kind2();
return;
}
int kind1(){
return triunghi1[this->n][this->m];
}
int kind2(){
return triunghi2[this->n][this->m];
}
};
void generare1(int noTo){
for(int i=2; i<noTo; i++){
for(int j=1; j<i; j++)
triunghi1[i][j] = ((triunghi1[i-1][j-1]%MOD) - (((i-1) * triunghi1[i-1][j])%MOD))%MOD;
}
return;
}
void generare2(int noTo){
for(int i=2; i<noTo; i++){
for(int j=1; j<i; j++)
triunghi2[i][j] = ((triunghi2[i-1][j-1]%MOD) + (j * triunghi2[i-1][j])%MOD)%MOD;
}
return;
}
int main() {
ifstream f("stirling.in");
int t;
f>>t;
int maxim=0;
stirling pe[1005];
for(int i=0; i<t; i++){
f>>pe[i].x>>pe[i].n>>pe[i].m;
if(pe[i].n > maxim)
maxim = pe[i].n;
}
intitalize(maxim+1);
generare1(maxim+1);
generare2(maxim+1);
ofstream g("stirling.out");
for(int i=0; i<t; i++){
pe[i].find();
g<<pe[i].rez<<endl;
}
return 0;
}