Cod sursa(job #3342074)

Utilizator BidonTurtitBezdedan Eric BidonTurtit Data 22 februarie 2026 17:53:43
Problema Numerele lui Stirling Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.39 kb
#include <iostream>
#include <fstream>
#define mod 98999
using namespace std;
ifstream fin("stirling.in");
ofstream fout("stirling.out");
int s[205][205],S[205][205],t;

void baza_s()
{
    for(int i=0;i<=200;i++)
        s[i][i]=1;
}
void baza_S()
{
    for(int i=1;i<=200;i++)
    {
        S[i][1]=1;
    }
    for(int i=0;i<=200;i++)
        S[i][i]=1;
}
int calc_s(int n,int m)
{
    if(s[n][m]!=0)
    {
        return s[n][m];
    }
    else
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(s[i][j]==0)
                {
                    s[i][j]=(s[i-1][j-1]-(i-1)*s[i-1][j]%mod)%mod;
                }
            }
        }
    }
    return s[n][m];
}
int calc_S(int n,int m)
{
    if(s[n][m]!=0)
    {
        return S[n][m];
    }
    else
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(S[i][j]==0)
                {
                    S[i][j]=(S[i-1][j-1]+j*S[i-1][j]%mod)%mod;
                }
            }
        }
    }
    return S[n][m];
}
int main()
{
    fin>>t;
    baza_s();
    baza_S();
    for(int i=1;i<=t;i++)
    {
        int x,n,m;
        fin>>x>>n>>m;
        if(x==1)
            fout<<calc_s(n,m)<<"\n";
        else
            fout<<calc_S(n,m)<<"\n";
    }
    return 0;
}