Pagini recente » Cod sursa (job #1246846) | Cod sursa (job #2828439) | Cod sursa (job #168609) | Cod sursa (job #475845) | Cod sursa (job #2374913)
#include <iostream>
#include <fstream>
#define MOD 98999
using namespace std;
int triangleKind1[205][205];
int triangleKind2[205][205];
void intitalize(int noTo){
for(int i=0; i<noTo+1; i++){
triangleKind1[i][0] = triangleKind2[i][0] = 0;
triangleKind1[i][i] = triangleKind2[i][i] = 1;
}
return;
}
void generateKind1(int noTo){
for(int i=2; i<noTo; i++){
for(int j=1; j<i; j++)
triangleKind1[i][j] = ((triangleKind1[i-1][j-1]%MOD) - (((i-1) * triangleKind1[i-1][j])%MOD))%MOD;
}
return;
}
void generateKind2(int noTo){
for(int i=2; i<noTo; i++){
for(int j=1; j<i; j++)
triangleKind2[i][j] = ((triangleKind2[i-1][j-1]%MOD) + (j * triangleKind2[i-1][j])%MOD)%MOD;
}
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 triangleKind1[this->n][this->m];
}
int kind2(){
return triangleKind2[this->n][this->m];
}
};
int main() {
ifstream f("stirling.in");
int t;
f>>t;
int maxim=0;
stirling pairs[1005];
for(int i=0; i<t; i++){
f>>pairs[i].x>>pairs[i].n>>pairs[i].m;
if(pairs[i].n > maxim)
maxim = pairs[i].n;
}
intitalize(maxim+1);
generateKind1(maxim+1);
generateKind2(maxim+1);
ofstream g("stirling.out");
for(int i=0; i<t; i++){
pairs[i].find();
g<<pairs[i].rez<<endl;
}
return 0;
}