Cod sursa(job #2222497)

Utilizator MoldovanAndrei1Moldovan Andrei MoldovanAndrei1 Data 17 iulie 2018 09:44:17
Problema Frac Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;
long long cmmdc(long long a,long long b)
{
    long long r;
    while(b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
int main()
{
    freopen("frac.in","r",stdin);
    freopen("frac.out","w",stdout);
    long long n ,k;
    scanf("%lld%lld",&n,&k);
    long long r=n,t1=n;
    long long d=2,e=0;
    while(d*d<=r)
    {
        while(r%d==0)
        {
            e++;
            r/=d;
        }
        if(e)t1*=(d-1),t1/=d;
        d++;
        e=0;
    }
    if(r>1)
        t1*=(r-1),t1/=r;
    k--;
    long long sol=(k/t1)*n;
    k%=t1;
    k++;
    long long i;
    for(i=1;i<=n;i++)
    {
        long long s=cmmdc(i,n);
        if(s==1)
        {
            --k;
            if(k==0)
            {
                sol+=i;
                printf("%lld\n",sol);
                return 0;
            }
        }

    }
    return 0;
}