Cod sursa(job #779662)

Utilizator maritimCristian Lambru maritim Data 18 august 2012 14:34:36
Problema Factoriale Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>

FILE *f = fopen("factoriale.in","r");
FILE *g = fopen("factoriale.out","w");

#define MaxN 130
#define MaxNumarMare 20000
#define ll long long

int N,K;
int A[MaxN];
int Best[MaxN];
int SolV[MaxNumarMare];
ll Sol = 1;

void citire(void)
{
	fscanf(f,"%d %d",&N,&K);
	for(int i=1;i<=N;i++)
		fscanf(f,"%d ",&A[i]);
}

inline void Descompune(int a)
{
	for(int i=2;i<=a;i++)
		if(a%i == 0)
			for(;a%i == 0;++Best[i],a/= i);
}

inline int Valoare(int x)
{
	if(x%K == 0)
		return 0;
	
	return (x/K+1)*K-x;
}

void Rezolvare(void)
{
	for(int i=1;i<=N;i++)
		for(int j=2;j<=A[i];j++)
			Descompune(j);
		
	for(int i=1;i<=100;i++)
		for(int j=Valoare(Best[i]);j;j--)
			Sol = Sol*i;
}

int main()
{
	citire();
	Rezolvare();
	
	fprintf(g,"%lld\n",Sol);
}