Cod sursa(job #2056272)

Utilizator dragomirmanuelDragomir Manuel dragomirmanuel Data 4 noiembrie 2017 10:36:13
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>

using namespace std;

const int NMax = 202;
const int mod = 98999;
int sp1[NMax][NMax];
int sp2[NMax][NMax];

void Speta1()
{
    for(int i=0; i<=NMax; ++i)
        sp1[i][i] = 1;

    for(int i=1; i<=NMax; ++i)
        for(int j=1; j<=NMax; ++j)
    {
        sp1[i][j] = (sp1[i-1][j-1] - (i-1) * sp1[i-1][j])%mod;
    }

}

void Speta2()
{
    for(int i=0; i<=NMax; ++i)
        sp2[i][i] = 1, sp2[i][1]=1;

    for(int i=3; i<=NMax; ++i)
    {
        for(int j=2; j<=NMax; ++j)
        {
            sp2[i][j] = (sp2[i-1][j] * j + sp2[i-1][j-1])%mod;
        }
    }
}


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

    int teste, x, n,m;
    fin >> teste;

    Speta1();
    Speta2();

    while(teste)
    {
        fin >> x >> n >> m;

        if(x==1)
        {
            fout << sp1[n][m];
        }

        else
        {
            fout << sp2[n][m];
        }

        fout << "\n";

        --teste;
    }

    return 0;
}