Cod sursa(job #1087971)

Utilizator xtreme77Patrick Sava xtreme77 Data 20 ianuarie 2014 00:55:49
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#define NMax 1000000000
using namespace std;
int fct (int x);
int main ()
{
    int p,val;
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%d",&p);
    if (p==0) printf("1");
    else
    {
        int min=1,max=NMax,mid;
        bool ok=false;
        while (min<=max && !ok)
        {
            mid=(min+max)/2;
            val=fct(mid);
            if (val<p) min=mid+1;
            else if (val>p) max=mid-1;
            else ok=true;
        }
        if (ok)
        {
            while (mid%5) mid--;
            printf("%d",mid);
        }
        else printf("-1");
    }
}
int fct (int x)
{
    int a=5,rez=0;
    while (x/a)
    {
        rez=rez+x/a;
        a=a*5;
    }
    return rez;
}