Cod sursa(job #1844717)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 10 ianuarie 2017 12:57:49
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <cstdio>
#define INF 1152921504606846976

using namespace std;
int v[50][2];
int verif (long long x,int elem){
    int sum;
    long long nr;
    for (int i=1;i<=elem;i++){
        nr=v[i][0];
        sum=0;
        while (nr<=x){
            sum=sum+x/nr;
            if (nr<=x/v[i][0])
                nr*=v[i][0];
            else break;
        }
        if (sum<v[i][1])
            return 0;
    }
    return 1;
}
int main()
{
    FILE *fin=fopen ("gfact.in","r");
    FILE *fout=fopen ("gfact.out","w");
    int p,q,d,elem;
    long long st,dr,mid;
    fscanf (fin,"%d%d",&p,&q);
    d=2;
    elem=0;
    while (d*d<=p){
        if (p%d==0){
            v[++elem][0]=d;
            while (p%d==0){
                v[elem][1]+=q;
                p/=d;
            }
        }
        d++;
    }
    if (p!=1){
        v[++elem][0]=p;
        v[elem][1]=q;
    }
    st=1;
    dr=5;
    while (st<=dr){
        if (st%2+dr%2==2)
            mid=st/2 +dr/2 +1;
        else mid= st/2 +dr/2;
        if (verif(mid,elem))
            dr=mid-1;
        else st=mid+1;
    }
    fprintf (fout,"%lld",st);
    return 0;
}