Cod sursa(job #966487)

Utilizator bDannYdBurileanu Daniel bDannYd Data 25 iunie 2013 23:31:37
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#include <stdlib.h>

long p, n;

void read() {
    FILE *fin;

    fin = fopen("fact.in","r");

    fscanf(fin, "%d", &p);

    fclose(fin);
}

int zero(int k) {
    int x = 5, c = 0;

    while (k / x > 0) {
        c += (k / x);
        x *= 5;
    }

    return c;
}

int search(int l,int r){
    int m, x = -1;

    while(l <= r){
        m = l + (r - l) / 2;
        if(p <= zero(m)){
            x = m;
            r = m-1;
        }else
            l = m + 1;
    }

    return x;
}

void write() {
    FILE *fout;

    fout = fopen("fact.out","w");
    if(zero(search(1, 1e9)) == p)
        fprintf(fout,"%d",search(1, 1e9));
    else
        fprintf(fout, "-1");

    fclose(fout);
}


int main()
{
    read();
    write();

    return 0;
}