Cod sursa(job #1843145)

Utilizator ArambasaVlad Arambasa Arambasa Data 8 ianuarie 2017 11:42:48
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <iostream>
#define MOD 98999
using namespace std;
ifstream in ("stirling.in");
ofstream out ("stirling.out");
const int NMax=201;

long v1[NMax][NMax],v2[NMax][NMax];
long n,m;
int T,x;

long F(long argn,long argm)
{
    if (argn<argm||argm<0)
        return 0;
    if (argn==argm)
    {
        v1[argn][argm]=1;
        return 1;
    }
    if (!v1[argn][argm])
        v1 [argn][argm]=(F(argn-1,argm-1)-(argn-1)*F(argn-1,argm)%MOD)%MOD;
    return v1[argn][argm];
}
long F2 (long argn,long argm)
{
    if (argn<argm||argm<0)
    {
        return 0;
    }
    if (argn==argm)
    {
        v2[argn][argm]=1;
        return 1;
    }
    if (!v2[argn][argm])
    {
        v2[argn][argm]=(F2(argn-1,argm-1)+argm*F2(argn-1,argm)%MOD)%MOD;
    }
    return v2[argn][argm];
}

int main()
{
    in>>T;
    for (int i=1;i<=T;i++)
    {
        in>>x>>n>>m;
        if (x==1)
            out<<F(n,m)<<'\n';
        else
            out<<F2(n,m)<<'\n';
    }

    return 0;
}