Cod sursa(job #825938)

Utilizator dariusdariusMarian Darius dariusdarius Data 29 noiembrie 2012 20:35:27
Problema Factoriale Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<stdio.h>
#define P 24
int p[P]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,61,67,71,73,79,83,89,97};
int e[P];
int a[10005];
void afis()
{
    int i;
    for(i=a[0];i>=1;i--)
        printf("%d",a[i]);
    printf("\n");
}
void solve(int x)
{
    int i,nr,cx;
    for(i=0;i<P;i++)
        {
            nr=0;cx=x;
            while(cx)
            {
                nr=nr+cx/p[i];
                cx=cx/p[i];
            }
            e[i]+=nr;
        }
}
void multiply(int v)
{
    int t,i;
    t=0;
    for(i=1;i<=a[0];i++)
        {
            a[i]=a[i]*v+t;
            t=a[i]/10;
            a[i]=a[i]%10;
        }
    while(t)
    {
        a[++a[0]]=t%10;
        t=t/10;
    }
}
int main()
{
    freopen("factoriale.in","r",stdin);
    freopen("factoriale.out","w",stdout);
    int n,k,i,x,j;
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
        {
            scanf("%d",&x);
            solve(x);
        }
    for(i=0;i<P;i++)
        e[i]=(k-e[i]%k)%k;
    a[0]=a[1]=1;
    for(i=0;i<P;i++)
        for(j=1;j<=e[i];j++)
            multiply(p[i]);
    afis();
    return 0;
}