Cod sursa(job #1507029)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 21 octombrie 2015 11:11:30
Problema Numerele lui Stirling Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>

#define MOD 98999
#define NMAX 207

using namespace std;
int t, x, n, m, s1[NMAX][NMAX], s2[NMAX][NMAX];

int ans1(int a, int b)
{
    if(s1[a][b] == -1) s1[a][b] = ans1(a-1, b-1) - (a-1)*ans1(a-1, b);
    return s1[a][b];
}
int ans2(int a, int b)
{
    if(s2[a][b] == -1) s2[a][b] = ans2(a-1, b-1) + b * ans2(a-1, b);
    return s2[a][b];
}

int main()
{
    freopen("stirling.in", "r", stdin);
    freopen("stirling.out", "w", stdout);
    scanf("%d", &t);
    for(int i = 1; i< NMAX; ++i)
        for(int j = 1; j < NMAX; ++j)
            {
                s1[i][j] = -1;
                s2[i][j] = -1;
            }
    s1[1][1] = 1;
    s2[1][1] = 1;
    for(; t; --t)
    {
        scanf("%d %d %d", &x, &n, &m);
        if(x == 1) printf("%d\n", ans1(n, m));
        if(x == 2) printf("%d\n", ans2(n, m));
    }
    return 0;
}