Cod sursa(job #2279667)

Utilizator raduandreicaRadu Andreica raduandreica Data 9 noiembrie 2018 21:03:52
Problema Frac Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int gcd(int a, int b)
{
 	if (a==0) return b;
 	return gcd(b%a, a);
}
int prim(int n)
{   int k;
    k=2;
    for(int i=2; i<=sqrt(n); i++)
    {
       if(n%i==0) k=1;
    }
    return k;
}
int main()
{
    ifstream fin("frac.in"); ofstream fout("frac.out");
    long long n, v[100000],i,j=0,k=0,Euler,m,p,q,u[12];
    fin>>n;Euler=n;
    for(i=2;i<=n/2;i++) {if((n/i)*i==n) {if(prim(i)==2) {u[j]=i;j++;}}}
    for(i=0;i<j;i++) Euler=(Euler/u[i])*(u[i]-1);
    fin>>m;
    p=m%Euler;q=m/Euler; i=0;j=1;
    while((i<n)&&(j<=p)){
        i++;
        if(gcd(i,n)==1) j++;
    }
    fout<<(q*n+i);
    return 0;
}