Cod sursa(job #868346)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 30 ianuarie 2013 22:16:07
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <cstdio>

using namespace std;

#define Nmax (1<<8)
#define modulo 98999

int s[Nmax][Nmax], S[Nmax][Nmax];

void generare_s(){

    s[1][1] = 1;

    for(int i = 2; i < Nmax; ++i)
        for(int j = 1; j <= i; ++j)
            s[i][j] = (s[i-1][j-1] - (i-1)*s[i-1][j])%modulo;
}

void generare_S(){

    S[1][1] = 1;

    for(int i = 2; i < Nmax; ++i)
        for(int j = 1; j <= i; ++j)
            S[i][j] = (S[i-1][j-1] + j*S[i-1][j])%modulo;
}

void rezolva(){

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

    generare_s();
    generare_S();

    int T, speta, n, m;

    scanf("%d", &T);

    for(; T; T--){

        scanf("%d%d%d", &speta, &n, &m);

        if(speta == 1)
            printf("%d\n", s[n][m]);

        if(speta == 2)
            printf("%d\n", S[n][m]);
    }
}


int main()
{
    rezolva();

    return 0;
}