Cod sursa(job #2575077)

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

FILE *fin , *fout;

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

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

    int n;
    long long dr,st,mij;
    fscanf(fin,"%d",&n);
    if(n==0) {
        fprintf(fout,"1\n");
    }
    else {
        st=1;
        dr=100000000;
        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,"%lld\n",st+1);
        }
        else {
            fprintf(fout,"-1\n");
        }
    }

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