Cod sursa(job #949047)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 12 mai 2013 12:50:20
Problema GFact Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
long long p, q, a[110], v[110], nr=0;

void desc(long long n){
    long long i=2, k;
    while(i*i<=n)
    {
        if(n%i==0)
        {
            k=0;
            while(n%i==0)
            {
                n/=i;
                k++;
            }
            a[++nr]=i;
            v[nr]=k;
        }
        i++;
    }
    if(n!=1)
    {
        a[++nr]=n;
        v[nr]=1;
    }
}

long long verif(long long n){
    long long i, e, s=1, aux;
    for(i=1; i<=nr; i++)
    {
        aux=n;
        e=0;
        while(aux>=a[i])
        {
            e+=aux/a[i];
            aux/=a[i];
        }
        if(e<v[i])
            s=0;
    }
    return s;
}

long long cb(){
    long long i=0, x=(1LL)<<60;
    while(x!=0)
    {
        if(verif(i+x)==0)
            i+=x;
        x=(x>>1);
    }
    return i+1;
}

int main(){
    long long i;
    f>>p>>q;
    desc(p);
    for(i=1; i<=nr; i++)
        v[i]*=q;
    g<<cb();
    return 0;
}