Cod sursa(job #1196699)

Utilizator MaarcellKurt Godel Maarcell Data 8 iunie 2014 20:57:42
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
using namespace std;
long int p;
long int cp(long int p)
{
    int aux=1,i;
    for (i=1; i<=p; i++) aux*=5;
    return aux;
}
long int zerouri(long int nr){
    long int c=0,i,aux;
    i=1;
    while (i)
    {
        aux=nr/cp(i);
        if (aux==0) i=-1;
        else c+=aux;
        i++;
    }
    return c;

}
int main(){
    long int z=0, a,b,aux; bool gasit=false;
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%d", &p);
    a=0;
    b=1000000000;
    while ((a<=b) && (!gasit))
    {

        aux=(a+b) /2;
        z = zerouri(aux);

        if (z>p) {b=aux-1;}
        else if (z<p) {a=aux+1;}
        else gasit=true;
    }
    while(zerouri(aux-1)==p) aux--;
    if (p==0) printf("1");
    else if (gasit) printf("%d",aux);
    else printf("-1");


    return 0;
}