Cod sursa(job #139573)

Utilizator Adriana_SAdriana Sperlea Adriana_S Data 20 februarie 2008 13:54:57
Problema Factoriale Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>

const int N_MAX = 128;

int v[N_MAX], fac[N_MAX];

void factori(int X)
{
	int i, wx = X;
	if (X % 2 == 0) {
		fac[2] ++;
		X /= 2;

		while (X % 2 == 0) {
			fac[2] ++;
			X /= 2;
		}
	}

	for (i = 3; i * i <= wx; i += 2) {
		while (X % i == 0) {
			fac[i] ++;
			X /= i;
		}
	}
	
	if (X != 1) fac[X] ++;
}

int main()
{
	freopen("factoriale.in", "r", stdin);
#ifndef _SCREEN_
	freopen("factoriale.out", "w", stdout);
#endif

	int N, K, i;
	scanf("%d %d\n", &N, &K);
	for (i = 1; i <= N; i ++) {
		scanf("%d ", &v[i]);
	}

	int j;
	for (i = 1; i <= N; i ++) {
		for (j = 1; j <= v[i]; j ++) {
			factori(j);
		}
	}

	int rez = 1, l, pt;
	for (i = 1; i <= 100; i ++) {
//		printf("i = %d fac = %d\n", i, fac[i]);
		if (fac[i] % K != 0) {
			pt = K - (fac[i] % K);

			l = i;
			for (j = 2; j <= pt; j ++) l *= i;
			rez *= l;
		}
	}

	printf("%d\n", rez);

	return 0;
}