Cod sursa(job #2985337)

Utilizator Vlad.Vlad Cristian Vlad. Data 26 februarie 2023 11:55:12
Problema Numerele lui Stirling Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>

#define NMAX 205
#define MOD 98999

using namespace std;

ifstream fin("stirling.in");
ofstream fout("stirling.out");

int s[NMAX][NMAX], S[NMAX][NMAX];

int speta1(int n, int k) {
    if (n == 0) {
        if (k == 0) {
            return 1;
        }
        return 0;
    }
    if (k == 0) {
        return 0;
    }

    return (s[n - 1][k - 1] - (n - 1) * s[n - 1][k]) % MOD;
}

int speta2(int n, int k) {
    if (n == 0) {
        if (k == 0) {
            return 1;
        }
        return 0;
    }
    if (k == 0) {
        return 0;
    }

    return (S[n - 1][k - 1] + k * S[n - 1][k]) % MOD;
}


void precalc() {
    for (int i = 0; i < NMAX; ++i) {
        for (int j = 0; j < NMAX; ++j) {
            s[i][j] = speta1(i, j);
            S[i][j] = speta2(i, j);
        }
    }
}
int main()
{
    int T;
    int p, x, y;

    precalc();

    fin >> T;
    for (int i = 0; i < T; ++i) {
        fin >> p >> x >> y;
        if (p == 1) {
            fout << s[x][y] << "\n";
        }
        else {
            fout << S[x][y] << "\n";
        }
    }
    return 0;
}