Cod sursa(job #2258353)

Utilizator Vaida_Radu_AndreiVaida Radu Andrei Vaida_Radu_Andrei Data 11 octombrie 2018 11:45:44
Problema GFact Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <cstdio>

using namespace std;
FILE* FIN=freopen("gfact.in","r",stdin);
FILE* FOUT=freopen("gfact.out","w",stdout);

long long int v[2][1024],n;

void cit()
{
    long long int x,y,i;
    scanf("%lld%lld",&x,&y);
    if(!(x%2))
    {
        v[0][n]=2;
        while(!(x%2))
        {
            v[1][n]++;
            x/=2;
        }
        n++;
    }
    for(i=3;i*i<=n;i+=2)
        if(!(x%i))
        {
            v[0][n]=i;
            while(!(x%i))
            {
                v[1][n]++;
                x/=i;
            }
            n++;
        }
    if(x>1)
    {
        v[0][n]=x;
        v[1][n]=1;
        n++;
    }
    for(i=0;i<n;i++)
        v[1][i]*=y;
}
long long int pow(int b,int e)
{
    long long int s=1;
    while(e)
        s*=b,e--;
    return s;
}
long long int ap(long long int z,long long int p)
{
    long long int s=0,a=0,b=z,p2=1;
    while(a<=p)
    {
        a*=b,a++;
        p2*=b;
    }
    a--,a/=b;
    p2/=b;
    while(p)
    {
        s+=p2*(p/a);
        p%=a;
        a--,a/=b;
        p2/=b;
    }
    return s;
}
void af()
{
    long long int i,x,s=1;
    for(i=0;i<n;i++)
    {
        x=ap(v[0][i],v[1][i]);
        if(x>s)
            s=x;
    }
    printf("%d",s);
}
int main()
{
    cit();
    af();
    return 0;
}