Cod sursa(job #2696544)

Utilizator Mirela_MagdalenaCatrina Mirela Mirela_Magdalena Data 16 ianuarie 2021 09:56:11
Problema Numerele lui Stirling Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#define MOD 98999
#define NMAX 200
#include <cstdio>

using namespace std;

int T, x, n, m;
int Speta1[NMAX+5][NMAX+5]; /// cicli
int Speta2[NMAX+5][NMAX+5]; /// submultimi

void precalc_t1()
{
    Speta1[0][0] = 1;
    Speta1[1][1] = 1;
    for(int i=2; i<=NMAX; i++)
    {
        for(int j=1; j<i; j++)
            Speta1[i][j] = (Speta1[i-1][j-1] - ((i-1) * Speta1[i-1][j])%MOD)%MOD;
        Speta1[i][i] = 1;
    }
}


void precalc_t2()
{
    Speta2[0][0] = 1;
    Speta2[1][1] = 1;
    for(int i=2; i<=NMAX; i++)
    {
        Speta2[i][1] = 1;
        Speta2[i][i] = 1;
        for(int j=2; j<i; j++)
            Speta2[i][j] = (Speta2[i-1][j-1] + (j * Speta2[i-1][j])%MOD)%MOD;

    }
}


int main()
{
    freopen("stirling.in", "r", stdin);
    freopen("stirling.out", "w", stdout);
    scanf("%d", &T);
    precalc_t1();
    precalc_t2();
    for(int i=1; i<=T; i++)
    {
        scanf("%d %d %d", &x, &n, &m);
        if(x == 1)
            printf("%d\n", Speta1[n][m]);
        else printf("%d\n", Speta2[n][m]);
    }

    return 0;
}