Cod sursa(job #2982100)

Utilizator Elvis_CostinTuca Elvis-Costin Elvis_Costin Data 19 februarie 2023 15:42:01
Problema Numerele lui Stirling Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>
using namespace std;
string np = "stirling";
ifstream f(np + ".in");
ofstream g(np + ".out");

// #define f cin
// #define g cout

int s1[203][203], s2[203][203];
const int mod = 98999;

int cer1(int x, int y)
{
    if (s1[x][y] == (0x3f3f3f3f))
        if (!x or !y or x < y)
            s1[x][y] = 0;
        else if (x == 1 and y == 1)
            s1[x][y] = 1;
        else
            s1[x][y] = (cer1(x - 1, y - 1) - (x - 1) * cer1(x - 1, y)) % mod;
    return s1[x][y];
}
int cer2(int x, int y)
{
    if (s2[x][y] == (0x3f3f3f3f))
        if (!x or !y or x < y)
            s2[x][y] = 0;
        else if (x == 1 and y == 1)
            s2[x][y] = 1;
        else
            s2[x][y] = (cer2(x - 1, y - 1) + y * cer2(x - 1, y)) % mod;
    return s2[x][y];
}
int main()
{
    memset(s1, 0x3f3f3f3f, sizeof s1);
    memset(s2, 0x3f3f3f3f, sizeof s2);

    int t;
    f >> t;
    for (int cer, n, m; t-- and f >> cer >> n >> m;)
        if (cer == 1)
            g << cer1(n, m) << '\n';
        else
            g << cer2(n, m) << '\n';

    return 0;
}