Cod sursa(job #1253467)

Utilizator calinbrita23Calin Brita calinbrita23 Data 1 noiembrie 2014 13:11:01
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#include <stdlib.h>

int factorial (int x){
    int counter=0;
    int five=5;
    while(x / five != 0) {
        counter=counter + (x/five);
        five=five*5;
    }
    return counter;
}

int main() {

    FILE *fin,*fout;
    fin=fopen("fact.in","r");
    fout=fopen("fact.out","w");

    int p,n,cnt=0,ok=1,i,l,r,m;
    fscanf(fin,"%d",&p);

    if(p == 0) {
        fprintf(fout,"1");
    }else {
        int l=0;
        int r = 5*p+1;
        int m = (r-l)/2;
        int ok=0;
        int found;
        while (l < r && !ok) {
            int nrZeros = factorial(m);
            if(nrZeros == p){
                ok=1;
                found=m;
            }
            if(nrZeros < p)
                l=m+1;
            else
                r=m;
            m=(l+r)/2;
        }
        if(ok == 1){
            fprintf(fout,"%d",found-(found%5));
        }
        else{
            fprintf(fout,"-1");
        }
    }
    return 0;
}