Cod sursa(job #2398929)

Utilizator Diana_IonitaIonita Diana Diana_Ionita Data 6 aprilie 2019 14:16:20
Problema GFact Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>

using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int nr,q,ok,j,d[100001],p[100001];
int NMAX= 2000000000;
void desc(int n)
{
    int x;
    while(n%2==0&&n)
    {
        d[0]=2;
        p[2]++;
        n=n/2;
    }
    p[2]*=q;
    x=3;
    while(n>1)
    {
        if(n%x==0)
        {
            d[++nr]=x;
            while(n%x==0&&n!=0)
            {
                n=n/x;
                p[x]++;
            }
            p[x]*=q;

        }
        x+=2;
    }
}
int isok()
{
    for(int i=0; i<=nr; i++) if(p[d[i]]) return false;
    return true;
}
int verif(int n)
{
    int x;
    while(n%2==0&&n)
    {
        p[2]--;
        n=n/2;
    }
    x=3;
    while(n>1)
    {
        if(n%x==0)
        {
            while(n%x==0&&n!=0)
            {
                n=n/x;
                p[x]--;
            }
        }
        x+=2;
    }
    return isok();
}

int main()
{
    int we;
    fin>>we>>q;
    desc(we);
    for(int i=2; i<=NMAX; i++)
    {
        if(verif(i)==true)
        {
            fout<<i;
            break;
        }
    }
    return 0;
}