Pagini recente » Monitorul de evaluare | Cod sursa (job #2078456) | Monitorul de evaluare | Istoria paginii runda/pre1 | Cod sursa (job #1387988)
#include <fstream>
#define DIM 110
using namespace std;
ifstream fin ("factoriale.in" );
ofstream fout("factoriale.out");
int N, i, j, V[DIM], D[DIM];
int A[DIM*DIM], nr, K, val, k;
void SetUp(){
fin >> N >> K;
for(i = 1; i <= N; i ++)
fin >> V[i];
return;
}
void mul(int A[], int B){
int i, t = 0;
for(i = 1; i <= A[0] || t; i ++, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
return;
}
void Descompose(){
for(i = 1; i <= N; i ++){
for(j = 1; j <= V[i]; j ++){
val = j; k = 2;
while(val != 1){
nr = 0;
while(val % k == 0){
nr ++; val /= k;
}
if(nr != 0)
D[k] += nr;
k ++;
}
}
}
return;
}
void CodeExpert(){
A[1] = A[0] = 1;
for(i = 2; i <= 100; i ++){
if(D[i] != 0){
if(D[i] % K != 0){
for(j = 1; j <= K - (D[i] % K); j ++)
mul(A, i);
}
}
}
return;
}
void Finish(){
for(i = A[0]; i >= 1; i --)
fout << A[i];
return;
}
int main(){
SetUp();
Descompose();
CodeExpert();
Finish();
return 0;
}