Cod sursa(job #2599878)

Utilizator PMI13Pop Marius Ionut PMI13 Data 11 aprilie 2020 19:54:25
Problema Factorial Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <stdlib.h>

long long verif (long long x)
{
    long long z = 0 , k = 5;
    while(x / k)
    {
        z += x / k;
        k *= 5;
    }
    return z;
}

 long long fact ( long long st , long long dr , long long p)
{
    if(st >= dr)
        return -1;
    else
    {
        long long mij = (st + dr) / 2;
        long long ok = verif(mij);
        if(ok == p)
            return mij;
        if(ok < p)
            return fact(mij + 1 , dr , p);
        return fact(st , mij - 1 , p);
    }
}

long long factorial (long long n , long long p)
{
    if( p == 0)
        return 1;
    if( p == 1 )
        return 5;
    n = fact(1 , p * 5 , p);
    if(n > 0)
        while(n % 5)
            n--;
    return n;
}
int main()
{
    long long p, n;

    FILE *fp = fopen("fact.in","r");
    fscanf(fp ,"%lld" , &p);
    fclose(fp);

    FILE *fi = fopen("fact.out" , "w");
    fprintf(fi , "%lld" , factorial(n , p));
    fclose(fi);

    return 0;
}