Cod sursa(job #3168399)

Utilizator bagae123Burlacu Andrei bagae123 Data 12 noiembrie 2023 12:59:30
Problema Factoriale Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <fstream>

using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
\
int v[101],nrmare[101],q[101];
bool ciur[101];
void produs(int nrmare[],int n)
{
    int i,t=0;
    for(i=1; i<=nrmare[0]; i++)
    {
        t=t+nrmare[i]*n;
        nrmare[i]=t%10;
        t=t/10;
    }
    while(t!=0)
    {
        nrmare[++nrmare[0]]=t%10;
        t=t/10;
    }
}
int main()
{
    int n,k,d,x,p,s,i,r,j,nr=0;
    ciur[0]=1;
    ciur[1]=1;
    for(i=2; i*i<=100; i++)
    {
        if(ciur[i]==0)
        {
            q[++nr]=i;
            for(j=i*i; j<=100; j=j+i)
            {
                ciur[j]=1;
            }
        }
    }
    fin>>n>>k;
    for(i=1; i<=n; i++)
    {
        fin>>r;
        for(j=2; j<=r; j++)
        {
            x=j;
            d=1;
            while(q[d]*q[d]<=x&&d<=nr)
            {
                p=0;
                while(x%q[d]==0)
                {
                    p++;
                    x=x/q[d];
                }
                if(p!=0)v[q[d]]=v[q[d]]+p;
                d++;
            }
            if(x>1)v[x]++;
        }
    }
    s=1;
    nrmare[0]=1;
    nrmare[1]=1;
    for(d=1; d<=nr; d++)
    {
        if(v[q[d]]!=0&&v[q[d]]%k!=0)
        {
            while(v[q[d]]%k!=0)
            {
                produs(nrmare,q[d]);
                v[q[d]]++;
            }
        }
    }
    for(i=nrmare[0]; i>=1; i--)
    {
        fout<<nrmare[i];
    }
    return 0;
}