Mai intai trebuie sa te autentifici.
Cod sursa(job #592807)
Utilizator | Data | 30 mai 2011 19:53:17 | |
---|---|---|---|
Problema | Frac | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.74 kb |
#include<fstream.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
ifstream f("frac.in");
ofstream g("frac.out");
long n,a[100],p;
void factori(long x)
{long w=x,k=1;
if(x%2==0)
{while(x%2==0)
x/=2;
a[k]=2;k++;
}
for(int i=3;i<(w/2);i+=2)
{if(x%i==0)
{while(x%i==0)
x/=i;
a[k]=i;k++;
}
}
}
long calcul(long x)
{int i;
long pp=x,ppp=1;
for(i=1;i<=100&&a[i];i++)
{
ppp*=a[i];
pp-=x/ppp;
}
return pp;
}
long cautabin(long in,long sf)
{
long k=(in+sf)/2,t;
t=calcul(k);
if(t==p)
return k;
if(t<p)
in=k+1;
if(t>p)
sf=k-1;
cautabin(in,sf);
if(in>sf)
return 0;
}
int main()
{
f>>n>>p;
factori(n);
g<<cautabin(0,1000000000);
return 0;
}