Pagini recente » Cod sursa (job #105003) | Cod sursa (job #1991237) | Cod sursa (job #332829) | Cod sursa (job #771363) | Cod sursa (job #137688)
Cod sursa(job #137688)
#include <stdio.h>
#include <math.h>
#define MAXN 100000
#define baza 10000000
long n, k, nr, i, v[121], aux, j, o, a[121];
long sol[MAXN+4];
void prim() {
long ipr = 0, jpr = 0, vb1 = 0;
for (ipr = 2; ipr <= 100; ++ipr) {
vb1 = 0;
for (jpr = 2; jpr * jpr <= ipr; ++jpr) {
if (ipr % jpr == 0) {
vb1 = 1;
break;
}
}
if (vb1 == 0) {
v[++o] = ipr;
}
}
}
void produs(long *w, long val) {
long ipr = 0,t=0;
for (ipr = MAXN; ipr >= w[0];ipr--)
{
aux = w[ipr] * val + t;
w[ipr] = aux % baza;
t = aux / baza;
}
if (t != 0) {
--w[0];
w[w[0]] = t;
}
}
int main() {
freopen("factoriale.in", "r", stdin);
freopen("factoriale.out", "w", stdout);
long kk;
scanf("%ld %ld\n", &n, &kk);
prim();
for (i = 1; i <= n; ++i) {
scanf("%ld", &nr);
for (j = 1; j <= nr; ++j) {
aux = j;
k = 1;
while (aux != 1) {
while (aux % v[k] == 0) {
aux /= v[k];
++a[v[k]];
}
++k;
}
}
}
/*for (i = 1; i <= 100; ++i) {
if (a[i] != 0) {
printf("%ld^%ld\n", i, a[i]);
}
}*/
sol[0] = MAXN;//sol[0] = capat
sol[MAXN] =1 ;
for (i = 1; i <= 100; ++i) {
if (a[i] != 0) {
if (a[i] % kk != 0) {
for( long jf = 1; jf <= kk - a[i]%kk; ++jf)
produs(sol, i);
}
}
}
printf("%ld",sol[sol[0]]);
for( long i = sol[0]+1; i <= MAXN; ++i)
printf("%07ld",sol[i]);
return 0;
}