Pagini recente » Istoria paginii runda/dutzlangos | Istoria paginii utilizator/liviu_gheorghe1234 | Cod sursa (job #2697029) | Diferente pentru documentatie/textile intre reviziile 107 si 102 | Cod sursa (job #528027)
Cod sursa(job #528027)
#include <fstream>
#include <vector>
using namespace std;
bool prim[110];
vector <int> primes;
int power[110];
void inmultire(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;
}
void ciur()
{
for(int i = 2; i <= 100; ++i)
{
if(!prim[i])
primes.push_back(i);
for(int j = i + i; j <= 100; j += i)
prim[j] = 1;
}
}
int main()
{
int n, k;
ifstream f("factoriale.in");
ofstream g("factoriale.out");
f >> n >> k;
ciur();
for(int i = 1; i <= n; ++i)
{
int nr;
f >> nr;
for(unsigned int j = 0; j < primes.size() && nr >= primes[j]; ++j)
{
int c = nr;
while(c != 0)
{
c /= primes[j];
power[j] += c;
}
}
}
int sol[10001];
sol[0] = 1;
sol[1] = 1;
for(unsigned int i = 0; i < primes.size(); ++i)
if(power[i] && power[i] % k)
for(int j = 1; j <= k - (power[i] % k); ++j)
inmultire(sol, primes[i]);
for(int i = sol[0]; i > 0; --i)
g << sol[i];
f.close();
g.close();
return 0;
}