Cod sursa(job #274124)
Utilizator | Agape Mihai b_polar | Data | 9 martie 2009 14:25:38 |
---|---|---|---|
Problema | Factorial | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.64 kb |
#include<iostream>
#define DIM 10
using namespace std;
long v[DIM]={5,25,125,625,3125,15625,78125,390625,1953125,48828125};
long div(long nr)
{
long s=0;
for(int i=0;i<DIM&&v[i]<=nr;i++)s+=(nr/v[i]);
return s;
}
int main()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
long P, N, inf, sup, f;
cin>>P;
for(inf=0,sup=5*P;inf<=sup;)
{
f=div((inf+sup)/2);
if(f==P){cout<<inf/5*5;return 0;}
else if(f>P)sup=(inf+sup)/2-1;
else inf=(inf+sup)/2+1;
}
cout<<-1;
}