Cod sursa(job #2116723)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 27 ianuarie 2018 21:34:22
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>

using namespace std;

FILE *in,*out;

const int nmax = 200;
const int modulo = 98999;
int s[1+nmax][1+nmax], c[1+nmax][1+nmax];

void precompute()
{
    s[1][1] = 1;
    for(int i = 2;i <= nmax;i ++)
        for(int j = 1;j <= i;j ++)
            s[i][j] = (s[i-1][j-1] + j*s[i-1][j]) % modulo;
    c[0][0] = 1;
    for(int i = 1;i <= nmax;i ++)
        for(int j = 1;j <= i;j ++)
            c[i][j] = (c[i-1][j-1] - (i-1)*c[i-1][j]) % modulo;
}

int main()
{
    in = fopen("stirling.in","r");
    out = fopen("stirling.out","w");
    precompute();
    int t;
    fscanf(in,"%d",&t);
    while(t--)
    {
        int x,n,m;
        fscanf(in,"%d %d %d",&x,&n,&m);
        if(x == 1)
            fprintf(out,"%d\n",c[n][m]);
        else
            fprintf(out,"%d\n",s[n][m]);
    }
    return 0;
}