Cod sursa(job #1087210)

Utilizator toncuvasileToncu Vasile toncuvasile Data 19 ianuarie 2014 00:38:11
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>
#include<iostream>
using namespace std;

const int N=201,MOD=98999;
int s[201][201], S[201][201];

void precalculare_s()
{
    s[1][1]= 1;
    for( int i=2 ; i<N ; ++i )//precalculam pana la limita maxima
        for( int j=1 ; j<=i ; ++j )//pentru j>i s(i,j)=0 pentru ca ciclurile au cel putin un element
            s[i][j]= ( s[i-1][j-1] - (i-1)*s[i-1][j] )%MOD ;
}

void precalculare_S()
{
    S[1][1]= 1;
    for( int i=2 ; i<N ; ++i )
        for( int j=1 ; j<=i ; ++j )
            S[i][j]= ( S[i-1][j-1] + j*S[i-1][j] )%MOD;
}

int main(){
    freopen("stirling.in","r",stdin);
    freopen("stirling.out","w",stdout);

    precalculare_s();
    precalculare_S();

    int T;
    cin>>T;

    int id,n,m;
    for(;T;T--){
        cin>>id>>n>>m;
        if(id==1) cout<<s[n][m]<<"\n";
           else cout<<S[n][m]<<"\n";
    }
}