Cod sursa(job #25402)

Utilizator deltaDumitrache Mircea delta Data 4 martie 2007 12:27:48
Problema Zero 2 Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasa a 9-a si gimnaziu Marime 1.24 kb
#include <fstream.h>
#include <math.h>
#define DIM 1000

unsigned long int B[10];
unsigned long int N[10];
unsigned long int resturi[DIM];
unsigned long int S = 1, nr;
int Factorial(unsigned long int);
int Nrzerouri(unsigned long int);
int Baza(unsigned long int, int);


int main()
{
	ifstream fin("zero2.in");
	ofstream fout("zero2.out");
	int i;

	for (i = 0; i < 10; i++)
		fin >> N[i] >> B[i];
	for (i = 0; i < 10; i++)
	{
		S = 1;
		for (int j = 1; j <= N[i]; j++)
			S *= Factorial(j);
		fout << S << " ";
		if (B[i] == 10)
			fout << Nrzerouri(S) << '\n';
		else
		{	nr = Baza(S, B[i]);
			fout << nr << '\n';
		}
	}
	fin.close();
	fout.close();
	return 0;
}

int Factorial(unsigned long int x)
{
	unsigned long int fact = 1;
	for (int k = 1; k <= x; k++)
		fact *= k;
	return fact;
}

int Nrzerouri(unsigned long int s)
{
	int zero = 0;
	while (s)
	{
		if (s%10 == 0)
		{
			zero++;
			s /=10;
		}
		else
			break;
	}
	return zero;
}

int Baza(unsigned long int s, int baza)
{
	int i = 1;
	int zero = 0;
	while (s)
	{
		resturi[i] = s%baza;
		s = s/baza;
		i++;
	}
	for (int k = 1; k <= i; k++)
		if (resturi[k] != 0)
			break;
		else
			zero++;
	return zero;
}