Cod sursa(job #978676)

Utilizator cosmo0093Raduta Cosmin cosmo0093 Data 29 iulie 2013 14:29:48
Problema Numerele lui Stirling Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>

const int MOD = 98999;

struct Stirley
{
	int s, S; 
};

int main(void)
{
	Stirley **nArr = new Stirley*[201];
	for(int i = 0; i < 201; i++)
	{
		nArr[i] = new Stirley[201];
	}
	for(int i = 0; i < 201; i++)
	{
		nArr[i][i].s = 1;
		nArr[i][i].S = 1;
	}
	for(int i = 1; i < 201; i++)
	{
		nArr[0][i].s = 0;
		nArr[0][i].S = 0;
		nArr[i][0].s = 0;
		nArr[i][0].S = 0;
	}
	for(int i = 2; i < 201; i++)
		for(int j = 1; j <= i; j++)
		{
			nArr[i][j].s = (nArr[i-1][j-1].s - (i - 1) * nArr[i - 1][j].s) % MOD;
			nArr[i][j].S = (nArr[i - 1][j - 1].S + j * nArr[i - 1][j].S) % MOD;
		}
	std::ifstream in("stirling.in");
	std::ofstream out("stirling.out");
	int nV, a, b, c;
	in >> nV;
	for(int i = 0; i < nV; i++)
	{
		in >> a >> b >> c;
		if(a == 1) out << nArr[b][c].s << '\n';
		else out << nArr[b][c].S << '\n';
	}
	return 0;
}