Cod sursa(job #1973634)

Utilizator Marina23Oprea Marina Marina23 Data 25 aprilie 2017 16:42:12
Problema Frac Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>

using namespace std;

long long int N,P,Aux,k,i,Fi,S,j,Nr,Fact[1000],Limit1,Limit2;

int main()
{
    ifstream fin("frac.in");
    ofstream fout("frac.out");

    fin>>N>>P;
    Aux=N;
    k=0;
    for(i=2;i<=N and Aux>1;i++)
        if(Aux%i==0)
        {
            while(Aux>1 and Aux%i==0)
                Aux=Aux/i;
            k++;
            Fact[k]=i;
        }//for
    Fi=N;
    for(i=1;i<=k;i++)
        Fi=Fi/Fact[i]*(Fact[i]-1);
    if(P<=Fi)
    {
        Limit1=1;
        Limit2=N;
    }//if
    else
    {
        S=0;
        i=0;
        while(S+Fi<=P)
        {
            S+=Fi;
            i++;
        }//while
        Limit1=N*(i-1);
        Limit2=N*i;
        Nr=Fi*(i-1);
    }//else
    for(i=Limit1;i<=Limit2;i++)
    {
        for(j=1;j<=k;j++)
            if(i%Fact[j]==0)
                break;
        if(j==k+1)
        {
            Nr++;
            if(Nr==P)
                break;
        }//if
    }//for
    fout<<i;

    fin.close ();
    fout.close();
    return 0;
}