Pagini recente » Monitorul de evaluare | Cod sursa (job #104298) | Cod sursa (job #63432) | Cod sursa (job #203318) | Cod sursa (job #363051)
Cod sursa(job #363051)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fu("factorial.in");
ofstream fo("factorial.out");
int main()
{
long capat , inceput , p , n , k ;
fu >> n;
capat = 400000015;
p = capat / 2 ;
inceput = 1;
while (p){
p=(inceput+capat)/2;
if (p % 5 == 1) p=p-1;
if (p % 5 == 2) p=p-2;
if (p % 5 == 3) p=p-3;
if (p % 5 == 4) p=p-4;
k = p/5+p/25+p/125+p/625+p/3125+p/15625+p/78125+p/390625+p/1953125+p/9765625+p/48828125+p/244140625;
if (k==n) break;
if (k>n){
capat = p;
}
if (k<n){
if (inceput == p) {
p=-1;
break;
}
inceput = p;
}
if (inceput == capat){
p=-1;
break;
}
}
if (n != 0)
fo <<p;
else fo <<1;
fu.close();
fo.close();
}