Cod sursa(job #772886)

Utilizator raluca_vacaruVacaru Raluca-Ioana raluca_vacaru Data 31 iulie 2012 13:37:49
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#include <cstring>

#define N 201
#define MOD 98999

using namespace std;

int s[N][N], S[N][N];

void precalc_s () {
    memset (s, 0, sizeof(s));
    int i, j;
    s[1][1] = 1;
    for (i=2; i<N; ++i)
        for (j=1; j<=i; ++j)
            s[i][j] = ( s[i-1][j-1] - (i-1)*s[i-1][j] ) % MOD;
}

void precalc_S () {
    memset (S, 0, sizeof(S));
    int i, j;
    S[1][1] = 1;
    for (i=2; i<N; ++i)
        for (j=1; j<=i; ++j)
            S[i][j] = ( S[i-1][j-1] + j*S[i-1][j] ) % MOD;
}

void read_and_solve () {
    int n, m, sp, i, t;
    freopen ("stirling.in", "r", stdin);
    freopen ("stirling.out", "w", stdout);
    scanf ("%d", &t);
    for (int i=1; i<=t; ++i) {
        scanf ("%d%d%d", &sp, &n, &m);
        printf ("%d\n", (sp==1) ? s[n][m] : S[n][m]);
    }
    fclose (stdin);
    fclose (stdout);
}

int main () {
    precalc_s ();
    precalc_S ();
    read_and_solve ();
    return 0;
}