Pagini recente » Cod sursa (job #1523228) | Cod sursa (job #1916719) | Cod sursa (job #1289200) | Cod sursa (job #31271) | Cod sursa (job #805957)
Cod sursa(job #805957)
#include<cstdio>
#include<algorithm>
#define MOD 98999
using namespace std;
struct numar{int a,b,poz;};
numar a1[1010],a2[1010];
int s[210][210],n2,n1,t,sol[1010];
inline bool cmp(numar x,numar y)
{
if (x.a<y.a) return true;
if (x.a>y.a) return false;
if (x.a==y.a){
if (x.b>y.b) return false;
else return true;
}
}
inline void stirling1(int n)
{
int i,x,y,k;
for (x=0;x<=n;x++)
for (y=0;y<=x;y++)
s[x][y]=0;
k=1;
s[0][0]=1;
for (x=1;x<=n;x++)
{
for (y=1;y<=x;y++)
{
s[x][y]=(s[x-1][y-1]-(x-1)*s[x-1][y])%MOD;
if (x==a1[k].a && y==a1[k].b) {
sol[a1[k].poz]=s[x][y];
k++;
}
}
}
return;
}
inline void stirling2(int n)
{
int i,x,y,k;
for (x=0;x<=n;x++)
for (y=0;y<=x;y++)
s[x][y]=0;
k=1;
s[0][0]=1;
for (x=1;x<=n;x++)
{
for (y=1;y<=x;y++)
{
s[x][y]=(s[x-1][y-1]+y*s[x-1][y])%MOD;
if (x==a2[k].a && y==a2[k].b) {
sol[a2[k].poz]=s[x][y];
k++;
}
}
}
return;
}
inline void afis()
{
int i;
for(i=1;i<=t;i++)
printf("%d\n",sol[i]);
return;
}
inline void citire()
{
int k,x,y,l1=0,l2=0,i;
scanf("%d",&t);
for (i=1;i<=t;i++)
{
scanf("%d",&k);
if (k==1) {
scanf("%d%d",&x,&y);
l1++;
a1[l1].a=x;
a1[l1].b=y;
a1[l1].poz=i;
if (x>n1) n1=x;
}
else {
scanf("%d%d",&x,&y);
l2++;
a2[l2].a=x;
a2[l2].b=y;
a2[l2].poz=i;
if (x>n2) n2=x;
}
}
sort(a1+1,a1+l1+1,cmp);
sort(a2+1,a2+l2+1,cmp);
return;
}
int main()
{
freopen("stirling.in","r",stdin);
freopen("stirling.out","w",stdout);
citire();
stirling1(n1);
stirling2(n2);
afis();
fclose(stdin);
fclose(stdout);
return 0;
}