Cod sursa(job #2575110)

Utilizator DunareanuDinu Dunareanu Dunareanu Data 6 martie 2020 11:42:41
Problema Factorial Scor 60
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#include <stdlib.h>

FILE *fin , *fout;

int f(int n) {
    int p5=5,nr0=0;
    while(p5<=n) {
        nr0+=n/p5;
        p5*=5;
    }
    return nr0;
}

int main() {
    fin=fopen("fact.in","r");
    fout=fopen("fact.out","w");

    int n,dr,st,mij;

    fscanf(fin,"%d",&n);
    if(n==0) {
        fprintf(fout,"1\n");
    }
    else {
        st=1;
        dr=100000001;
        n--;
        while(dr-st>1) {
            mij=(st+dr)/2;
            if(n<f(mij)) {
                dr=mij;
            }
            else {
                st=mij;
            }
        }
        if(f(st+1)==n+1) {
            fprintf(fout,"%d\n",st+1);
        }
        else {
            fprintf(fout,"-1\n");
        }
    }

    fclose(fin);
    fclose(fout);
    return 0;
}