Cod sursa(job #805963)

Utilizator a96tudorAvram Tudor a96tudor Data 1 noiembrie 2012 15:37:46
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<cstdio>
#include<algorithm>
#define MOD 98999
using namespace std;
int s1[210][210],s2[210][210],n2,n1,t;
inline void stirling1(int n)
{
    int i,x,y,k;
    for (x=0;x<=n;x++)
        for (y=0;y<=x;y++)
            s1[x][y]=0;
    k=1;
    s1[0][0]=1;
    for (x=1;x<=n;x++)
    {
        for (y=1;y<=x;y++)
        {
            s1[x][y]=(s1[x-1][y-1]-(x-1)*s1[x-1][y])%MOD;
        }
    }
    return;
}
inline void stirling2(int n)
{
    int i,x,y,k;
    for (x=0;x<=n;x++)
        for (y=0;y<=x;y++)
            s2[x][y]=0;
    k=1;
    s2[0][0]=1;
    for (x=1;x<=n;x++)
    {
        for (y=1;y<=x;y++)
        {
            s2[x][y]=(s2[x-1][y-1]+y*s2[x-1][y])%MOD;
        }
    }
    return;
}
inline void citire()
{
    int k,x,y,l1=0,l2=0,i;
    scanf("%d",&t);
    for (i=1;i<=t;i++)
    {
        scanf("%d%d%d",&k,&x,&y);
        if (k==1) printf("%d\n",s1[x][y]);
            else printf("%d\n",s2[x][y]);
    }
    return;
}
int main()
{
    freopen("stirling.in","r",stdin);
    freopen("stirling.out","w",stdout);

    stirling1(200);
    stirling2(200);
    citire();
    fclose(stdin);
    fclose(stdout);
    return 0;
}