Cod sursa(job #2278109)

Utilizator dianaICHBghita diana dianaICHB Data 7 noiembrie 2018 11:48:12
Problema Frac Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <cstdio>

using namespace std;
int k[50000];
int v[5140],save[5140];
unsigned long long int con;
void prim ()
{
    int i;
    con=1;
    v[con]=2;
    for (i=3;i<=50000;i=i+2)
    {
        if (k[i]==0)
        {
            con++;
            v[con]=i;
            for (int j=i;j<=50000;j=j+i)
            {
                k[j]++;
            }
            //printf("%d\n",i);
            //con++;
        }
    }
}

int main()
{
    freopen ("frac.in","r",stdin);
    freopen ("frac.out","w",stdout);
    long long int n,p,cn;
    unsigned long long int a,i,j;
    scanf("%lld%lld",&n,&p);
    cn=n;
    prim();
    a=0;
    for (i=1;i<=5140;i++)
    {
        if (n%v[i]==0)
        {
            while (cn%v[i]==0)
            {
                cn=cn/v[i];
            }
            a++;
            save[a]=v[i];
            v[i]=1;
        }
        if (v[i]>n)
        {
            i=5144;
        }
        if (cn==1)
        {
            i=5144;
        }
    }
    con=1;
    i=1;
    while (con!=p)
    {
        con++;
        i++;
        for (j=1;j<=a;j++)
        {
            if (i%save[j]==0)
            {
                j=a+1;
                con--;
            }
        }
    }
    printf("%lld",i);
    return 0;
}