Pagini recente » Cod sursa (job #3204227) | Cod sursa (job #171198) | Cod sursa (job #2669306) | Cod sursa (job #1109992) | Cod sursa (job #155097)
Cod sursa(job #155097)
#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;
ifstream f("fact.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();
ofstream g("fact.out");
g<<n;
g.close();
return 0;
}