Cod sursa(job #1810744)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 20 noiembrie 2016 15:18:52
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <cstdio>

using namespace std;
int v[100],sol[500000],ciur[101],prim[100];
void inmultsol (int x){
    int i,t=0;
    for (i=1;i<=sol[0];i++){
        sol[i]=sol[i]*x+t;
        t=sol[i]/10;
        sol[i]%=10;
    }
    while (t>0){
        sol[++sol[0]]=t%10;
        t/=10;
    }
}
int main()
{
    FILE *fin=fopen ("factoriale.in","r");
    FILE *fout=fopen ("factoriale.out","w");
    int n,k,i,x,j,el=0,p;
    fscanf (fin,"%d%d",&n,&k);
    for (i=2;i<=100;i++){
        if (ciur[i]==0){
            prim[++el]=i;
            for (j=i*2;j<=100;j+=i)
                ciur[j]=1;
        }
    }
    for (i=1;i<=n;i++){
        fscanf (fin,"%d",&x);
        for (j=1;j<=el;j++){
            p=prim[j];
            while (p<=x){
                v[prim[j]]=v[prim[j]]+x/p;
                p*=prim[j];
            }
        }
    }
    sol[0]=sol[1]=1;
    for (i=1;i<=el;i++){
        //if (i==el)
          //  printf ("a");
        if (v[prim[i]]%k!=0){
            for (j=1;j<=k-v[prim[i]]%k;j++){
                inmultsol(prim[i]);
            }
        }
    }
    for (i=sol[0];i>0;i--)
        fprintf (fout,"%d",sol[i]);
    return 0;
}