Cod sursa(job #479166)

Utilizator freak93Adrian Budau freak93 Data 23 august 2010 10:16:25
Problema Factoriale Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>

using namespace std;

const char iname[]="factoriale.in";
const char oname[]="factoriale.out";
const int maxn=605;

ifstream f(iname);
ofstream g(oname);

int a[maxn],v[maxn],n,k,i,j,x,p;

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;
}

int main()
{
    f>>n>>p;
    for(i=1;i<=n;++i)
    {
        f>>j;
        while(j)
            ++a[j],--j;
    }
    for(i=1;i<maxn;++i)
    {
        x=i;
        for(j=2;j<=i;++j)
        {
            k=0;
            while(x%j==0)
                x/=j,++k;
            v[j]+=a[i]*k;
        }
    }
    k=p;
    memset(a,0,sizeof(a));
    a[0]=a[1]=1;
    for(i=1;i<maxn;++i)
        if(v[i]%k)
            for(j=0;j<k-v[i]%k;++j)
                mul(a,i);
    for(i=a[0];i;--i)
        g<<a[i];
    g<<"\n";
}