Cod sursa(job #474500)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 3 august 2010 23:02:13
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>
#include <algorithm>
using namespace std;

#define MAX 1000001
#define LIM 10000000

int ciur[MAX];
long long p, i, aux;
long long st, dr, mijl, nr = LIM;
int cinci, doi;

void descompunere (long long x)
{
    for (i=2; i<=x; ++i)
    {
        aux = i;
        if (aux % 2 != 0 && aux % 5 != 0)
            continue;
        while (aux % 2 == 0 && aux > 1)
        {
            doi ++;
            aux /= 2;
        }
        while (aux % 5 == 0 && aux > 1)
        {
            cinci ++;
            aux /= 5;
        }

    }

}

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

    st = 1;
    dr = LIM;
    while (st <= dr)
    {
        mijl = (st + dr) / 2;
        doi = cinci = 0;
        descompunere (mijl);
        if (min (doi, cinci) == p)
        {
            if (nr > mijl)
                nr = mijl;
            dr = mijl - 1;
        }
        else if (min (doi, cinci) < p)
            st = mijl + 1;
        else
            dr = mijl - 1;
    }

    fprintf (g, "%lld", nr);

    fclose (g);
    fclose (f);
    return 0;
}