Cod sursa(job #2911289)
| Utilizator | Data | 28 iunie 2022 13:50:12 | |
|---|---|---|---|
| Problema | Factoriale | Scor | 10 |
| Compilator | cpp-64 | Status | done |
| Runda | 3_iulie | Marime | 1.19 kb |
#include <fstream>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int n,k,v[105],divizori[105],ciur[105],x,q,f[105],prod=1;
void prim()
{
ciur[0]=ciur[1]=1;
for(int i=2;i<=100;i++)
{
if(ciur[i]==0)
{
divizori[++k]=i;
for(int j=2*i;j<=100;j=j+i)
{
ciur[j]=1;
}
}
}
}
int main()
{
fin>>n>>q;
prim();
for(int i=1;i<=n;i++)
{
fin>>x;
for(int j=2;j<=x;j++)
{
int xy=j;
for(int d=1;divizori[d]*divizori[d]<=j;d++)
{
if(j%divizori[d]==0)
{
while(j%divizori[d]==0)
{
f[divizori[d]]++;
j/=divizori[d];
}
}
}
if(j!=1)
{
f[j]++;
}
j=xy;
}
}
for(int i=1;i<=100;i++)
{
if(f[i])
{
for(int j=1;j<=f[i]%q;j++)
prod*=i;
}
}
fout<<prod;
}
