Cod sursa(job #1117463)

Utilizator gapdanPopescu George gapdan Data 23 februarie 2014 15:51:36
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<cstdio>
using namespace std;
int p;
int main()
{
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%d",&p);
    if (p==0) {printf("%d",1);return 0;}
    int st=5,dr=2000000000;
    int gasit=false;
    while (st<dr)
    {
        int mij=(st+dr)/2;
        int v=5,nr=0;
        while (mij/v>0)
        {
            nr+=mij/v;
            v=v*5;
        }
        if(nr==p)
        {
            while(mij%5!=0)
                mij--;
            printf("%d\n",mij);
            gasit=true;
            break;
        }
        else
            if(nr<p)
                st=mij+1;
            else
                dr=mij-1;
    }
    if (gasit==false) printf("-1\n");
    return 0;
}