Pagini recente » Cod sursa (job #2979498) | Cod sursa (job #2302928) | Cod sursa (job #1356092) | Cod sursa (job #925119) | Cod sursa (job #779510)
Cod sursa(job #779510)
#include <fstream>
#define MAX 105
#define MAXX 100005
using namespace std;
int v[MAX], p[MAX], sol[MAXX];
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;
}
bool isPrime(int a)
{
for(int i = 2; i * i <= a; i++)
if(a % i == 0)
return false;
return true;
}
int main()
{
int n, k;
ifstream in("factoriale.in"); in>>n>>k;
for(int i = 1; i <= n; i++) in>>v[i];
in.close();
for(int i = 2; i <= 100; i++)
{
if(isPrime(i))
{
int val;
for(int j = 1; j <= n; j++)
{
val = i;
while(val <= v[j])
{
p[i] += v[j] / val;
val *= i;
}
}
if(p[i] % k) p[i] = k - p[i] % k;
else p[i] = 0;
}
}
sol[0] = sol[1] = 1;
for(int i = 2; i <= 100; i++)
{
while(p[i]--)
mul(sol, i);
}
ofstream out("factoriale.out");
for(int i = sol[0]; i; i--) out<<sol[i];
out.close();
return 0;
}