Pagini recente » Cod sursa (job #2344785) | Cod sursa (job #2676399) | Cod sursa (job #2272361) | Cod sursa (job #2191781)
#include <fstream>
#define mod 98999
using namespace std;
ifstream in("stirling.in");
ofstream out("stirling.out");
int st1[201][201];
int st2[201][201];
struct ura
{
int c,n,k;
};
ura v[1001];
void s1(int n,int k)
{
int i,j;
st1[1][1]=1;
st1[1][2]=0;
st1[2][1]=-1;
st1[2][2]=1;
for(i=2;i<=n;i++)
{
for(j=2;j<=k;j++)
{
if((i-j)%2==0)
st1[i][j]=(st1[i-1][j-1]+st1[i-1][j]*n)%mod;
else
st1[i][j]=0-(st1[i-1][j-1]+st1[i-1][j]*n)%mod;
}
}
}
void s2(int n,int k)
{
int i,j;
st2[0][0]=1;
st2[1][0]=0;
st2[0][1]=1;
for(i=1;i<=n;i++)
{
for(j=1;j<=k;j++)
{
st2[i][j]=(st2[i-1][j-1]+st1[i-1][j]*k)%mod;
}
}
}
int main()
{
int n1,k1,c,t,i,maxn=0,maxk=0;
in>>t;
for(i=1;i<=t;i++)
{
in>>v[i].c>>v[i].n>>v[i].k;
if(maxn<v[i].n)
{
maxn=v[i].n;
}
if(maxk<v[i].k)
maxk=v[i].n;
}
s1(maxn,maxk);
s2(maxn,maxk);
for(i=1;i<=t;i++)
{
n1=v[i].n;
k1=v[i].k;
if(v[i].c==1)
{
out<<st1[v[i].n][v[i].k]<<'\n';
}
if(v[i].c==2)
{
out<<st2[v[i].n][v[i].k]<<'\n';
}
}
return 0;
}