Cod sursa(job #2112901)

Utilizator flibiaVisanu Cristian flibia Data 23 ianuarie 2018 22:42:43
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("factoriale.in");
ofstream out("factoriale.out");

int n, k, p, x, st[110], vf, freq[110], a[50100] = {1, 1};
bool viz[110];

void get(int nr, int val){
	int rs = 0;
	int aux = val;
	while(aux <= nr){
		rs += nr / aux;
		aux *= val;
	}
	freq[val] += rs;
}

void mul(int val){
	int i, t;
	for(i = 1, t = 0; i <= a[0] || t; i++, t /= 10)
		a[i] = (t += a[i] * val) % 10;
	a[0] = i - 1;
}

int main(){
	in >> n >> k;
	for(int i = 2; i <= 100; i++)
		if(!viz[i]){
			st[++vf] = i;
			for(int j = i + i; j <= 100; j += i)
				viz[j] = 1;
		}
	for(int i = 1; i <= n; i++){
		in >> x;
		for(int j = 1; j <= vf; j++)
			if(st[j] > x)
				break;
			else
				get(x, st[j]);
	}
	for(int i = 1; i <= vf; i++){
		freq[st[i]] %= k;
		if(freq[st[i]]){
			p = k - freq[st[i]];
			for(int j = 1; j <= p; j++)
				mul(st[i]);
		}
	}
	for(int i = a[0]; i; i--)
		out << a[i];
	return 0;
}