Cod sursa(job #1436290)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 15 mai 2015 17:59:30
Problema Factorial Scor 95
Compilator c Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 500000000
inline int zeros(int x){
    int con=0;
    long long p5=5;
    while(p5<x){
        con+=x/p5;
        p5*=5;
    }
    return con;
}
int main(){
    FILE*fi,*fout;
    int st,dr,mij,x,n,poz;
    fi=fopen("fact.in" ,"r");
    fout=fopen("fact.out" ,"w");
    fscanf(fi,"%d" ,&n);
    if(n==0)
       fprintf(fout,"1");
    else{
        st=-1;
        dr=MAXN;
        while(st<=dr){
            mij=(st+dr)/2;
            x=zeros(mij);
            if(x<=n){
                st=mij+1;
                poz=mij;
            }
            else
                dr=mij-1;
        }
        poz--;
        while(poz%5>0)
            poz--;
        if(zeros(poz)==n)
            fprintf(fout,"%d" ,poz);
        else
            fprintf(fout,"-1");
    }

    fclose(fi);
    fclose(fout);
}