Cod sursa(job #1357360)

Utilizator TibixbAndrei Tiberiu Tibixb Data 23 februarie 2015 21:38:33
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<fstream>
using namespace std;
int t, n, k, i, j, ii, fact, p[20003], m[20003], nrp, p2[20003], x[20003], xp;
ifstream in("factoriale.in");
ofstream out("factoriale.out");
int main(){
    in>>n>>k;
    m[1]=1;
    for(i=1; i<=99; i++){
        if(m[i]==0){
            p[++nrp]=i;
            for(j=i+i; j<=100; j+=i)
                m[j]=1;
        }
    }
    for(ii=1; ii<=n; ii++){
        in>>fact;
        for(i=1; p[i]<=fact && i<=nrp; i++){
            xp=p[i];
            while(fact/xp>0){
                p2[p[i]]+=fact/xp;
                xp*=p[i];
            }
        }
    }
    for(i=1; i<=nrp; i++){
        if(p2[p[i]]!=0)
            p2[p[i]]=k-p2[p[i]]%k;
        if(p2[p[i]]%k==0)
            p2[p[i]]=0;
    }
    x[0]=x[1]=1;
    for(ii=1; ii<=nrp; ii++){
        while(p2[p[ii]]!=0){
            for(i=1; i<=x[0]; i++){
                x[i]=x[i]*p[ii]+t;
                t=x[i]/10;
                x[i]=x[i]%10;
            }
            while(t!=0){
                x[++x[0]]=t%10;
                t/=10;
            }
            p2[p[ii]]--;
        }
    }
    for(i=x[0]; i>=1; i--)
        out<<x[i];
return  0;
}