Cod sursa(job #2222988)

Utilizator arvlgeArdeleanu Vlad George arvlge Data 18 iulie 2018 19:27:53
Problema Cifra Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <limits.h>


int nrZrsFct(long n){
    int x,ans,i,p;
    x=floor((long double)log(n)/log(5));
    ans=0,p=1;
    for(i=1;i<=x;i++){
        p*=5;
        ans+=floor((long double )n/p);
    }
    return ans;
}

long solve(int p,long li,long ls){
    int res;
    long mij;
    mij=li/2+ls/2+1*(ls%2==1 && li%2==1);
    res=nrZrsFct(mij);
    if (res==p)
        return mij;
    else if (abs(li-ls)<=5)
        return -1;
    else if(res>p)
        return solve(p,li,mij-1);
    else
        return solve(p,mij+1,ls);
}

int main(){
    FILE*fi,*fo;
    int p;
    long n,a=0,b=LONG_MAX;
    fi=fopen("fact.in","rt");
    fo=fopen("fact.out","wt");
    fscanf(fi,"%d",&p);
    fclose(fi);
    n=solve(p,a,b);
    printf("n=%d",n);
    if (abs(n)!=1)
        n=n/5*5;
    fprintf(fo,"%d",n);
    fclose(fo);
    return 0;
    //SO CLOSE STILL HAVE WORK TO DO
}