Cod sursa(job #2340593)

Utilizator ClaudiuALLupau Claudiu ClaudiuAL Data 10 februarie 2019 18:19:27
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll const mod=1000000007;
ll const md=998244353;
ll mypowr(ll a,ll b) {ll res=1;a%=mod; assert(b>=0);
for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll mypow(ll a,ll b) {ll res=1;assert(b>=0);
for(;b;b>>=1){if(b&1)res=res*a;a=a*a;}return res;}
ifstream in("fact.in");
ofstream out("fact.out");
#define mp make_pair
#define pb push_back
#define pf push_front
#define fi first
#define se second

ll n;
ll cnt=-1;

int dfs(int st,int dr){
if(st>dr)return 0;
int m=(st+dr)/2;
ll x=m*5;
ll sum=0;
ll p=5;
while(p<=x){
    sum+=x/p;
    p*=5;
}
if(sum==n){
    cnt=m*5;
    return 0;
}
if(sum>n){
    dfs(st,m-1);
}
else{
   dfs(m+1,dr);
}

}


int main()
{   cout<<fixed<<setprecision(12);
    cin.tie(0);cout.tie(0);
    ios_base::sync_with_stdio(0);

    in>>n;
    if(n==0){out<<"1";exit(0);}
     dfs(1,80000003);
    out<<cnt<<'\n';



    return 0;
}