Cod sursa(job #958059)

Utilizator thewildnathNathan Wildenberg thewildnath Data 6 iunie 2013 21:27:27
Problema GFact Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include<stdio.h>
#include<math.h>

int v[20],put[20];



int main()
{
    freopen("gfact.in","r",stdin);
    freopen("gfact.out","w",stdout);
    int p,q,i,j=0,nr=0,max=0;
    int b,exp;
    scanf("%d%d",&p,&q);
    p=pow(p,q);

    for(i=2;i<=p;i++)
    {
        j=0;
        while(p%i==0)
        {
            p=p/i;
            j++;
        }
        if(j>0)
        {
            v[++nr]=i;
            put[nr]=j;
        }
    }

    for(i=1;i<=nr;i++)
    {
        exp=1;
        b=v[i];
        while(exp<put[i])
        {
            b+=v[i];
            exp+=b/v[i];
        }
        if(b>max)
            max=b;
    }

    printf("%d\n",max);
    return 0;
}




/*
    int putere(int a,int b)
    {
        int i,r=1;
        for(i=1;i<=b;i++)
            r*=a;
        return r;
    }



    long long b=1,prod=1;
    while(p%2==0)
    {
        p=p/2;
        j++;
    }
    if(j>0)
    {
        v[++nr]=2;
        put[nr]=putere(2,j);
    }
    for(i=3;i<=p;i+=2)
    {
        j=0;
        while(p%i==0)
        {
            p=p/i;
            j++;
        }
        if(j>0)
        {
            v[++nr]=i;
            put[nr]=putere(i,j);
        }
    }

    for(i=1;i<=nr;i++)
        if(put[i]>max)
        {
            max=put[i];
            prod=put[i]/


    while(prod<max)
    {
        b++;
        prod=prod*b;
    }
    for(i=1;i<=nr;i++)
        if(b<v[i])
            b=v[i];*/