Cod sursa(job #1357261)

Utilizator acomAndrei Comaneci acom Data 23 februarie 2015 20:46:10
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream>
#include<bitset>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
bitset <100> p;
int n,k,x,nr,v[100],ap[100];
int sol[10005]={1,1};
void ciur()
{
    int i,j;
    p[1]=1;
    for (i=2;i<100;++i)
        if (!p[i])
        {
            v[++nr]=i;
            for (j=2;i*j<100;++j)
                p[i*j]=1;
        }
}
void prod(int A[], int K)
{
    int i,t;
    for (i=1,t=0;i<=A[0] || t;++i,t/=10)
        A[i]=(t+=A[i]*K)%10;
    A[0]=i-1;
}
int main()
{
    int i,j,pow;
    ciur();
    fin>>n>>k;
    for (i=1;i<=n;++i)
    {
        fin>>x;
        for (j=1;v[j]<=x && j<=nr;++j)
        {
            pow=v[j];
            while (pow<=x)
            {
                ap[j]+=x/pow;
                pow*=v[j];
            }
        }
    }
    for (i=1;i<=nr;++i)
        if (ap[i]%k)
        {
            x=ap[i]%k;
            for (j=x+1;j<=k;++j)
                prod(sol,v[i]);
        }
    for (i=sol[0];i;--i)
        fout<<sol[i];
    fout<<"\n";
    return 0;
}