Cod sursa(job #1319462)

Utilizator retrogradLucian Bicsi retrograd Data 17 ianuarie 2015 00:23:18
Problema Numerele lui Stirling Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>

#define MOD 98999

using namespace std;

ifstream fin("stirling.in");
ofstream fout("stirling.out");

long S[200][200], s[200][200];
long type, n, m;

long Fs(long n, long m) {
    if(n<m) return 0;
    if(s[n][m]) return s[n][m];
    if(!n||!m) return 0;
    if(n == 1 && m == 1) return 1;
    s[n][m] = ( Fs(n-1, m-1) - (n-1)*Fs(n-1, m) )%MOD;
    return s[n][m];
}

long FS(long n, long m) {
    if(S[n][m]) return S[n][m];
    if(!n||!m) return 0;
    if(n<m) return 0;
    if(n == 1 && m == 1) return 1;
    S[n][m] = ( FS(n-1, m-1) + m*FS(n-1, m) )%MOD;
    return S[n][m];
}

int main() {
    long T, type, n, m;
    fin>>T;
    while(T--) {
        fin>>type>>n>>m;
        if(type == 1) fout<<Fs(n, m);
        else fout<<FS(n, m);
        fout<<'\n';
    }
    return 0;
}