Pagini recente » Cod sursa (job #908415) | Diferente pentru implica-te/arhiva-educationala intre reviziile 19 si 18 | Cod sursa (job #711374) | Cod sursa (job #3137469) | Cod sursa (job #1810630)
#include<fstream>
#include<bitset>
using namespace std;
ifstream fin ("factoriale.in");
ofstream fout("factoriale.out");
long long p[103],e[103],i,j,k,t,n,v[103];
unsigned long long sol;
bitset<103>f;
long long putere(long long a,long long b){
if(b==0){
return 1;
}
long long p=1;
while(b!=0){
if(b%2==1){
p=p*a;
}
a=a*a;
b/=2;
}
return p;
}
long long expo(long long nfact,long long prim){
long long r=0;
long long prod=prim;
while(prod<=nfact){
r+=nfact/prod;
prod*=prim;
}
return r;
}
int main(){
fin>>n>>t;
for(i=1;i<=n;i++){
fin>>v[i];
}
k=0;
for(i=2;i<=100;i++){
if(f[i]==0){
p[++k]=i;
for(j=i+i;j<=100;j+=i){
f[j]=1;
}
}
}
for(j=1;j<=n;j++){
for(i=1;i<=k;i++){
e[i]+=expo(v[j],p[i]);
}
}
sol=1;
for(i=1;i<=k;i++){
if(e[i]%t!=0){
sol*=putere(p[i],t-(e[i]%t));
}
}
fout<<sol;
return 0;
}