Cod sursa(job #2695857)

Utilizator ioana0211Ioana Popa ioana0211 Data 14 ianuarie 2021 18:36:36
Problema Numerele lui Stirling Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <iostream>

using namespace std;
ifstream fin ("stirling.in");
ofstream fout ("stirling.out");
int t, n, m, x;
long long S[201];
const int MOD= 98999;
int stirling2 (int n, int m)
{
    S[1]=1;
    for(int i=m; i<=200; i++) S[i]=0; S[0]=0;
    for(int i=2; i<=n; i++){
        for(int j=i; j>=1; j--)
            S[j]=(S[j-1]+j*S[j]%MOD)%MOD;
        /*for(int j=1; j<=i; j++)
            cout<<S[j]<<" ";
        cout<<"\n";*/
    }
    return S[m];
}
int stirling1 (int n, int m)
{
    S[1]=1;
    for(int i=m; i<=200; i++) S[i]=0; S[0]=0;
    for(int i=2; i<=n; i++)
        for(int j=i; j>=1; j--)
            S[j]=(S[j-1]-(i-1)*S[j]%MOD)%MOD;
    return S[m];
}
int main()
{
    fin>>t;
    for(int i=1; i<=t; i++)
    {
        fin>>x>>n>>m;
        if(x==2) fout<<stirling2(n, m)<<"\n";
        else fout<<stirling1(n, m)<<"\n";
    }
    return 0;
}