Cod sursa(job #2180514)

Utilizator victorv88Veltan Victor victorv88 Data 20 martie 2018 22:05:04
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
#define mod 98999

using namespace std;

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

int s1[205][205], s2[205][205], n, k, nr, tip;

void stirling2()
{
    s2[1][1]=1;
    s2[2][1]=1;
    s2[2][2]=1;
    for (int i=3; i<=201; i++)
    {
        for (int j=i-1; j>1; j--)
        {
            s2[i][j]=(j*(s2[i-1][j]))%mod+s2[i-1][j-1];
            s2[i][j]=s2[i][j]%mod;
        }
        s2[i][1]=1;
        s2[i][i]=1;
    }
}

void stirling1()
{
    s1[1][1]=1;
    s1[2][1]=-1;
    s1[2][2]=1;
    for (int i=3; i<=201; i++)
    {
        s1[i][i]=1;
        s1[i][1]=s1[i-1][1]*(-i+1);
        s1[i][1]=s1[i][1]%mod;
        for (int j=i-1; j>1; j--)
        {
            s1[i][j]=s1[i-1][j-1]-((i-1)*s1[i-1][j])%mod;
            s1[i][j]=s1[i][j]%mod;
        }
    }

}

int main()
{
    stirling1();
    stirling2();
    f >> nr;
    for (int i=0; i<nr; i++)
    {
        f >> tip >> n >> k;
        if (tip==1)
            g << s1[n][k] << endl;
        else
            g << s2[n][k] << endl;
    }
    return 0;
}