Cod sursa(job #1412183)

Utilizator BogdanisarBurcea Bogdan Madalin Bogdanisar Data 1 aprilie 2015 10:14:59
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cstring>

#define ull unsigned long long
#define ll long long
#define MOD 98999

using namespace std;
ifstream f("stirling.in");
ofstream g("stirling.out");
int T,tip,n,k;
int str_speta1[205][205],str_speta2[205][205];

void precalcul_sp1();
void precalcul_sp2();

int main()
{
    precalcul_sp1();
    precalcul_sp2();
    f>>T;
    while (T--)
    {
        f>>tip>>n>>k;
        switch (tip)
        {
            case 1: {g<<str_speta1[n][k]<<'\n';break;}
            case 2: {g<<str_speta2[n][k]<<'\n';}
        }
    }
    f.close();g.close();
    return 0;
}

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

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