Cod sursa(job #2286576)

Utilizator andreisophieMMAndrei Maruntis andreisophieMM Data 20 noiembrie 2018 14:59:50
Problema Numerele lui Stirling Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
#define mod 98999

using namespace std;

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

int s1[205][205],s2[205][205];

short int semn(int a, int b)
{
    if ((a-b)%2)
        return -1;
    else
        return 1;
}

int s(int n, int k)
{
    if (k>n || k==0 || n==0)
        return 0;
    else
        if (n==k)
            return 1;
        else
            if (s1[n][k]!=0)
                return s1[n][k];
            else
            {
                s1[n][k]=((n-1)*s(n-1,k)+s(n-1,k-1))%mod;
                return s1[n][k];
            }
}

int S(int n, int k)
{
    if (k>n || k==0 || n==0)
        return 0;
    else
        if (n==k)
            return 1;
        else
            if (s2[n][k]!=0)
                return s2[n][k];
            else
            {
                s2[n][k]=(k*S(n-1,k)+S(n-1,k-1))%mod;
                return s2[n][k];
            }
}

int main()
{
    int n,p,a,b;
    f>>n;
    for (int i=0;i<n;i++)
    {
        f>>p>>a>>b;
        if (p==1)
            g<<semn(a,b)*s(a,b)<<'\n';
        else
            g<<S(a,b)<<'\n';
    }
    return 0;
}