Cod sursa(job #1976564)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 3 mai 2017 18:34:28
Problema Factoriale Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("factoriale.in");
ofstream g("factoriale.out");
int n,k,v[102];
int np[]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,47,53,59,61,67,71,73,79,83,89,91,97,0};
int fr[40];
int Huge[1002];
int main()
{
    f>>n>>k;
    for(int i=1;i<=n;++i)
        f>>v[i];
    sort(v+1,v+n+1);
    int mmc=n;
    for(int i=2;i<=v[n];++i)
    {
        while(v[n-mmc+1]<i)
            --mmc;
        int r=i;
        for(int j=1;np[j]<=97;++j)
        {
            int cs=0;
            while(r%np[j]==0)
            {
                r/=np[j];
                ++cs;
            }
            fr[j]+=mmc*cs;
        }
    }
    Huge[1]=1;
    int l=1;
    for(int i=1;np[i]<=97;++i)
    {
        int val=k-fr[i]%k;
        if(val==k)
            val=0;
        for(int q=1;q<=val;++q){
            for(int r=1;r<=l;++r)
                Huge[r]*=np[i];
            for(int r=1;r<=l;++r)
            {
                Huge[r+1]+=Huge[r]/10;
                Huge[r]%=10;
                if(r==l && Huge[r+1])
                    ++l;
            }
        }
    }
    for(int j=l;j>=1;--j)
        g<<Huge[j];
    return 0;
}