Cod sursa(job #2056284)

Utilizator B_RazvanBaboiu Razvan B_Razvan Data 4 noiembrie 2017 10:39:51
Problema Numerele lui Stirling Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <cstdio>
#define nMax 205
#define MOD 98999

using namespace std;

int tip, n, m, a1[nMax][nMax], a2[nMax][nMax];

void speta1()
{
    a1[0][0] = 1;
    for(int i=1; i<=nMax; ++i)
        for(int j=1; j<=nMax; ++j)
        {
            a1[i][j] = (a1[i-1][j-1] - (i-1) * a1[i-1][j]) % MOD;
        }
}

void speta2()
{
    for(int i=1; i<=nMax; ++i)
    {
        a2[i][0] = 0;
        a2[i][i] = 1;
    }
    for(int i=2; i<=nMax; ++i)
        for(int j=1; j<=nMax; ++j)
        {
            a2[i][j] = (a2[i-1][j-1] - j * a2[i-1][j]) % MOD;
        }
}

int main()
{
    freopen("stirling.in", "r", stdin);
    freopen("stirling.out", "w", stdout);

    speta1();
    speta2();

    int nrTeste;
    scanf("%d", &nrTeste);
    for(int j=1; j<=nrTeste; ++j)
    {
        scanf("%d%d%d", &tip, &n, &m);
        if(tip == 1)
            printf("%d\n", a1[n][m]);
        else
            printf("%d\n", a2[n][m]);
    }
    return 0;
}