Pagini recente » Cod sursa (job #1967624) | Cod sursa (job #2154605) | Cod sursa (job #1124951) | Cod sursa (job #2723086) | Cod sursa (job #138463)
Cod sursa(job #138463)
#include<fstream.h>
#include<math.h>
#define nrc 10000
ifstream f("factoriale.in");
ofstream g("factoriale.out");
int factori[100],n,k,o,i;
int sol2[nrc];
void sol(int t)
{
for(int i=nrc-1;i>=1;i--)
{ sol2[i]=(sol2[i]*t)%10;sol2[i-1]+=(sol2[i]*t)/10;}
}
void creste(int o)
{
for(int aux=2;aux<=o;aux++)
{
int l=aux,d=2;
while(l!=1)
{ while(l%d==0)
{if (factori[d]+1!=k) factori[d]=k-(++factori[d]%k);
else factori[d]=0;
l/=d;}
d++;}}}
int main()
{
sol2[nrc-1]=1;
f>>n>>k;
for(i=1;i<=n;f>>o,creste(o),i++);
for(int y=2;y<=99;y++)
{
for(int j=1;j<=factori[y];j++)
{if (y/10!=0)
{
for(int i=nrc-1;i>=1;i--){int aux=sol2[i-1];sol2[i-1]=sol2[i];sol2[i]=aux;}sol2[nrc-1]=0;sol(y/10);
for(i=nrc-1;i>=1;i--)
{ sol2[i]=(sol2[i]+(sol2[i]*(y%10))%10)%10;sol2[i-1]+=(sol2[i]+(sol2[i]*(y%10))%10)/10;}
}else sol(y%10);}}
int flag=0;
for(int i=1;i<=nrc;i++)
{if(sol2[i]!=0) flag=1;
if (flag) g<<sol2[i];}
f.close();
g.close();
return 0;
}