Cod sursa(job #2500233)

Utilizator StanCatalinStanCatalin StanCatalin Data 27 noiembrie 2019 15:44:28
Problema Numerele lui Stirling Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("stirling.in");
ofstream out("stirling.out");

const int MOD = 98999;

int teste,tip,n,m,dp[201][201],dp_2[201][201];

int main()
{
    in >> teste;

    for (int i=1; i<=200; i++)
    {
        dp[i][i] = 1;
        dp[i][1] = 1;
        dp_2[i][0] = dp[0][i] = 0;
        dp_2[0][0] = 1;
        dp_2[i][i] = 1;
    }

    for (int i=3; i<=200; i++)
    {
        for (int j=2; j<i; j++)
        {
           dp[i][j] = (dp[i-1][j-1] + (j*dp[i-1][j])%MOD)%MOD;
        }
    }

    for (int i=2; i<=200; i++)
    {
       for (int j=1; j<i; j++)
       {
          dp_2[i][j] = (dp_2[i-1][j-1] - ((i-1)*dp_2[i-1][j])%MOD)%MOD;
       }
    }

    while (teste--)
    {
       in >> tip >> n >> m;
       if (tip == 2)
       {
          out << dp[n][m] << "\n";
       }
       else
       {
          out << dp_2[n][m] << "\n";
       }
    }
    return 0;
}