Cod sursa(job #1806188)

Utilizator mihai.alphamihai craciun mihai.alpha Data 14 noiembrie 2016 22:02:29
Problema GFact Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>

FILE *fin, *fout;
#define max(a, b)(a > b ? a : b)
int p,q,i,e;
long long putere(long long n,int p)  {
    long long rez=0;
    while(n)
    {
        n/=p;
        rez+=n;
    }
    return rez;
}
long long sol;
void caut(int a,int x)  {
    long long i,pas=1LL<<60;
    for(i=0;pas;pas>>=1)
        if (putere(i+pas,a)<x) i+=pas;
    sol=max(sol,i+1);
}
int main()  {
    fin = fopen("gfact.in", "r");
    fout = fopen("gfact.out", "w");
    fscanf(fin, "%d%d", &p, &q);
    for(i=2;i*i<=p;++i)
        if(p%i==0)
        {
            e=0;
            while(p%i==0)
            {
                p/=i;
                e+=q;
            }
            caut(i,e);
        }
    if(p>1) caut(p,q);
    fprintf(fout, "%lld", sol);
    fclose(fin);
    fclose(fout);
    return 0;
}