Pagini recente » Cod sursa (job #972395) | Cod sursa (job #1224718) | Cod sursa (job #3137592) | Cod sursa (job #2102657) | Cod sursa (job #2300016)
#include <fstream>
std::ifstream cin("stirling.in");
std::ofstream cout("stirling.out");
#define maxn 202
int s[maxn][maxn],S[maxn][maxn];
int T;
/*
STIRLING NUMBERS
s(n,m) = s(n-1,m-1) - (n-1)*s(n-1,m) first kind
S(n,m) = S(n-1,m-1) + m*S(n-1,m) second kind
*/
void precalcFirst(){
s[1][1]=1;
for(int i=2;i<maxn-1;i++)
for(int j=1;j<=i;j++)
s[i][j]=s[i-1][j-1]- (i-1)*s[i-1][j];
}
void precalcSecond(){
S[1][1]=1;
for(int i=2;i<maxn-1;i++)
for(int j=1;j<=i;j++)
S[i][j]=s[i-1][j-1] + j*s[i-1][j];
}
int main()
{
int x,y,speta;
cin>>T;
precalcFirst();
precalcSecond();
for(;T--;){
cin>>speta>>x>>y;
if(speta==1)
cout<<s[x][y]<<'\n';
else
cout<<S[x][y]<<'\n';
}
return 0;
}