Cod sursa(job #3240571)

Utilizator gugalcromMuntoiu Vlad-Ioan gugalcrom Data 17 august 2024 12:04:52
Problema Numerele lui Stirling Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
#define MOD 98999

using namespace std;

int s[256][256], S[256][256];

int main() {
    ifstream fin("stirling.in");
    ofstream fout("stirling.out");
    
    int T, i, j, op, N=0, M=0;
    fin >> T;

    int t[1000][3];

    for(i=0; i<T; ++i) {
        fin >> t[i][0] >> t[i][1] >> t[i][2];
        N = max(N, t[i][1]);
        M = max(M, t[i][2]);
    }

    S[0][0] = 1;
    for(i=1; i<=N; ++i) {
        S[i][0] = 0;
    }
    for(i=1; i<=M; ++i) {
        S[0][i] = 0;
    }
    for(i=1; i<=N; ++i) {
        for(j=1; j<=M; ++j) {
            S[i][j] = S[i-1][j-1] + j*S[i-1][j];
            S[i][j] %= MOD;
        }
    }

    s[0][0] = 1;
    for(i=1; i<=N; ++i) {
        s[i][0] = 0;
    }
    for(i=1; i<=M; ++i) {
        s[0][i] = 0;
    }
    for(i=1; i<=N; ++i) {
        for(j=1; j<=M; ++j) {
            s[i][j] = s[i-1][j-1] - (i-1)*s[i-1][j];
            s[i][j] %= MOD;
        }
    }

    for(i=0; i<T; ++i) {
        op = t[i][0];
        if(op == 1) {
            fout << s[t[i][1]][t[i][2]];
        } else if(op == 2) {
            fout << S[t[i][1]][t[i][2]];
        }
        fout << '\n';
    }
}