Pagini recente » Cod sursa (job #3120843) | Cod sursa (job #2453886) | Cod sursa (job #2574744) | Cod sursa (job #1152314) | Cod sursa (job #155092)
Cod sursa(job #155092)
#include<fstream.h>
long p;
long calcul (int n)
{
long s;
if (n%5==0) s=(n/5-1)*(n/5)/2*5+n/5;
else s=(n/5-1)*(n/5)/2*5+(n/5)*(n%5+1);
return s;
}
void cauta (long &n,long a, long b)
{
long s;
while (a+1<b && s!=p)
{
n=(a+b)/2;
s=calcul(n);
if (s<p) a=n;
else if (s>p) b=n;
}
if (s!=p) if (calcul(a+1)==p) n=a+1;
else if (calcul(a)==p) n=a;
else n=-1;
}
int main()
{
long n=100007;
fstream f("fact.in",ios::in);
f>>p;
if (p<=13) cauta(n,1,13);
else if (p<=100007) cauta (n,1,p);
else cauta (n,1,100007);
f.close();
fstream g("fact.out",ios::out);
g<<n;
g.close();
return 0;
}