Cod sursa(job #1905795)

Utilizator Tudor27Tudor Iacob Tudor27 Data 6 martie 2017 10:54:51
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("gfact.in");
ofstream fout("gfact.out");

int pute[30],nd;
long int divi[30],Q,k;

long long putere(long n,int k){
    long long nr=0;
    while(n!=0){
        nr+=n/k;
        n/=k;
    }
    return nr;
}

bool verde(long long n){
    for(int i=0;i<nd;i++){
        k=divi[i];
        if(putere(n,k)<Q*pute[i]){
            return false;
        }
    }
    return true;
}


int main()
{
    long long p,pas,n=0;
    long int q;
    int i;
    fin>>p>>q;
    Q=q;
    cout<<Q;
    for(i=2;i*i<=p;i++){
        if (p%i == 0) {
            divi[nd]=i;
            while(p%i==0){
                p=p/i;
                pute[nd]++;
            }
            nd++;
        }
    }
    if (p != 1) {
        divi[nd] = p;
        pute[nd++] = 1;
    }
    pas = (1LL << 60);
    while(pas!=0){
        if(!verde(n+pas)){
            n+=pas;
        }
        pas/=2;
    }
    fout<<n+1;
    return 0;
}