Cod sursa(job #1730350)

Utilizator Alexandru_Arama Alexandru Alexandru_ Data 16 iulie 2016 20:17:53
Problema GFact Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>

using namespace std;

long long p,q,v1[10001],k,k1,v2[10001],ok;
int f[200001];
int desc (long long x)
{
    long long i=0,d=2;
    while(x>1)
    {
        if(!(x%d))
        {
            int p=0;
            while(x%d==0)x/=d,p++;
            v1[++k1]=d;
            v2[k1]=p*q;
        }
        if(d*d>=x && x>1)
            d=x;
        else d++;
    }
}
int elim (long long x)
{
    long long i,ok1=0;
    for(i=1;i<=k1;i++)
    {if(x%v1[i]==0 && v2[i])
    {
        while(x%v1[i]==0 && v2[i])v2[i]--,x/=v1[i];
    }
    if(!v2[i])ok1++;
    }
    ok=(ok1==k1);
}
int ciur ()
{
    int i,ma=200000;
    for(i=1;i<=k1;i++)
    {
        for(int j=1;j*v1[i]<=ma;j++)
            f[j*v1[i]]=1;
    }
}
int main()
{
    ifstream fin ("gfact.in");
    ofstream fout ("gfact.out");
    fin>>p>>q;
    desc(p);
    ciur();
    long long i=0;
    for(i=2;!ok;i++)
        if(f[i])
    {
        elim(i);
        if(ok)break;
    }
    fout<<i;
    return 0;
}