Cod sursa(job #2038340)

Utilizator stefanpiturStefan Alexandru Pitur stefanpitur Data 13 octombrie 2017 17:04:21
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <cstdio>
#define BIG 500000000

using namespace std;

int pw5[]={5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625,1220703125};

int magic(int x){
    int nr,i;
    nr=i=0;
    while(pw5[i]<=x){
        nr=nr+x/pw5[i];
        i++;
    }
    return nr;
}

int cauta(int p){
    int li,ls,mij,val;
    li=1;
    ls=BIG;
    while(li<=ls){
        mij=(li+ls)/2;
        val=magic(mij);
        if(val==p)
            return mij;
        else if(val>p)
            ls=mij-1;
        else
            li=mij+1;
    }
    return -1;
}


int main()
{
    FILE *fin, *fout;
    int x,p;
    fin=fopen("fact.in","r");
    fout=fopen("fact.out","w");
    fscanf(fin,"%d",&p);
    if(p==0)
        fprintf(fout,"1");
    else{
        x=cauta(p);
        printf("%d\n",x);
        if(x>=0)
            x=x/5*5;
        fprintf(fout,"%d\n",x);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}