Cod sursa(job #1334247)

Utilizator alexx.cosmaCosma Cristian Alexandru alexx.cosma Data 4 februarie 2015 08:58:51
Problema Factorial Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <stdio.h>
#include <stdlib.h>


int findTrailingZeros(long long  n);
int calc(int n);

int main()
{
    FILE* in = fopen("fact.in","r");
    FILE* out = fopen("fact.out","w");
    int p;
    fscanf(in,"%d",&p);


    int c;
    int lo = 1;
    int hi = 100000000;
    int mid;
    int found = 0;

    while(lo<=hi)
    {
        mid = lo + (hi-lo)/2;
        c = findTrailingZeros(mid);

        if(c==p)
        {
            while(findTrailingZeros(mid)==p){
                mid-=1;
            }
            printf("%d ",mid);
            fprintf(out, "%d",mid);
            found = 1;
            break;
        }
        else if(c<p)
        {
            lo = mid+1;
        }
        else
        {
            hi = mid-1;
        }
    }
    if(found==0)
    {
        fprintf(out, "%d",-1);
    }

    return 0;
}

int findTrailingZeros(long long  n)
{
    // Initialize result
    long long count = 0;
    int i=5;
    // Keep dividing n by powers of 5 and update count
    for (i=5; n/i>=1; i *= 5)
        count += n/i;

    return count;
}