Cod sursa(job #3361031)

Utilizator Radu_GrigorieGrigorie Radu Stefan Radu_Grigorie Data 19 iulie 2026 00:41:26
Problema Factoriale Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
long long n, k, a, nrprime, put;
long long ciur[105], prime[105], putprim[105];
vector<long long> num;
void inmultire(long long fact)
{
    long long minte=0;
    for(int i=0; i<num.size(); i++)
    {
        num[i]=num[i]*fact+minte;
        minte=num[i]/10;
        num[i]%=10;
    }
    while(minte > 0)
    {
        num.push_back(minte % 10);
        minte /= 10;
    }
}
int main()
{
    fin >> n >> k;
    for(int i=2; i*i<=100; i++)
    {
        if(ciur[i] == 0)
        {
            for(int j = i * i; j <= 100; j += i)
            {
                ciur[j] = 1;
            }
        }
    }
    for(int i=2; i<=100; i++)
    {
        if(ciur[i]==0)
            prime[++nrprime]=i;
    }
    for(int i=1; i<=n; i++)
    {
        fin >> a;
        for(int j=1; j<=nrprime; j++)
        {
            put=prime[j];
            while(put<=a)
            {
                putprim[j]+=a/put;
                put*=prime[j];
            }
        }
    }
    num.push_back(1);
    for(int i=1; i<=nrprime; i++)
    {
        long long rest=putprim[i]%k;
        if(rest>0)
        {
            long long need=k-rest;
            for(int j=1; j<=need; j++)
            {
                inmultire(prime[i]);
            }
        }
    }
    for(int i=num.size()-1; i>=0; i--)
    {
        fout << num[i];
    }
    return 0;
}