Cod sursa(job #1496375)

Utilizator vlcmodanModan Valentin vlcmodan Data 4 octombrie 2015 20:52:37
Problema Factorial Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include<stdio.h>
using namespace std;
#define N 100000000
long long aux,medie,p;
long long nr(int a)
{
    int s=0,x=5;
    while(a>x)
    {
        s+=a/x;
        x*=5;
    }
    return s;
}
int minim(int a,int b)
{
    return a<b?a:b;
}
int cautare_binara(unsigned long long minim,unsigned long long maxim,int p)
{
    if(p==0)
        return 1;
    if(minim==maxim)
        return minim;
    aux=nr((minim+maxim)/2);
    if(aux==p)
    {
        aux=(minim+maxim)/2;
        aux=aux-aux%5;
        while(nr(aux)==p)
        aux-=5;
        aux+=5;
    return aux;
    }
    medie=(minim+maxim)/2;
    if(aux>p)
        return cautare_binara(minim,medie-1,p);
    if(aux<p)
        return cautare_binara(medie+1,maxim,p);

}
int main()
{
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%d",&p);

    printf("%d\n",cautare_binara(1,N,p));

    return 0;
}