Cod sursa(job #1199081)

Utilizator howsiweiHow Si Wei howsiwei Data 18 iunie 2014 03:19:57
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <cstdio>
#include <array>
using namespace std;
const int maxn = 200;
const int mod = 98999;

int main()
{
	ios::sync_with_stdio(false);
	freopen("stirling.in", "r", stdin);
	freopen("stirling.out", "w", stdout);
	array<array<int, maxn+1>, maxn+1> s;
	s[0][0] = 1;
	for (int n = 1; n <= maxn; n++) {
		for (int k = 1; k <= maxn; k++) {
			s[n][k] = s[n-1][k-1]-(n-1)*s[n-1][k];
			s[n][k] %= mod;
		}
	}
	array<array<int, maxn+1>, maxn+1> S;
	S[0][0] = 1;
	for (int n = 1; n <= maxn; n++) {
		for (int k = 1; k <= maxn; k++) {
			S[n][k] = S[n-1][k-1]+k*S[n-1][k];
			S[n][k] %= mod;
		}
	}
	int ntest;
	cin >> ntest;
	for (int test = 0; test < ntest; test++) {
		int kind, n, k;
		cin >> kind >> n >> k;
		if (kind == 1) {
			printf("%d\n", s[n][k]);
		}
		else {
			printf("%d\n", S[n][k]);
		}
	}
	return 0;
}