Cod sursa(job #585232)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 28 aprilie 2011 17:42:19
Problema Factoriale Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
# include <fstream>
using namespace std;
std :: ifstream f ("factoriale.in");
std :: ofstream g ("factoriale.out");
int i, j;
int val, ap[106], sol[1000];
int n, k, nr;
void prod (int a[], int b){
	int i;
	int t = 0;
	for (i = 1; i <= a[0] || t; ++i, t /= 10)
		a[i] = (t += a[i] * b);
	a[0] = i - 1;
}
int main (){
	f >> n >> k;
	for (i = 1; i <= n; ++i){
		f >> val;
		nr = val;
		for (val = 1; val <= nr; ++val){
			int dub = val;
			for (; !(val & 1); val >>= 1) ++ap[2];
			for (j = 3; j * j <= val && val > 1; j += 2){
				while (!(val % j)){
					val = val / j;
					++ap[j];
				}
			}
			if (val > 1) ++ap[val];
			val = dub;
		}
	}
	for (sol[0] = sol[1] = 1, i = 2; i <= 101; ++i)
		if (ap[i]){
			val = ap[i] % k;
			if (val){
		    	val = k - val;
			    for (; val > 0; --val)
				    prod (sol, i);
			}
		}
	for (i = 1; i <= sol[0]; ++i)
		g << sol[i];
	g << '\n';
	g.close ();
	return 0;
}