Cod sursa(job #795670)

Utilizator tudorv96Tudor Varan tudorv96 Data 9 octombrie 2012 12:10:10
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream fin ("fact.in");
ofstream fout ("fact.out");

int n;
int ad;
vector <int> a;

int main ()
{
    fin >> n;
    if (!n)
        fout << 1;
    else{
        int st = 0, dr = 1000000000, mid;
        while (st != dr)
        {
            mid = (st + dr) / 2;

            ad = 0;
            for (int i = 5; i <= mid; i = i * 5)
                ad = ad + mid / i;

            if (ad < n)
                st = mid + 1;
            else if (ad > n)
                dr = mid - 1;
            else if (ad == n)
                dr = mid;
        }

         ad = 0;
         for (int i = 5; i <= st; i = i * 5)
            ad = ad + st / i;
        if (ad != n) fout << -1;
        else         fout << st;
    }
    fin.close ();
    fout.close ();
    return 0;
}

        /*ad = 0;
        for (int i = 5; i <= r; i = i * 5)
            ad = ad + r / i;
        for (unsigned int i = 0; i < a.size(); ++i)
            if (a[i] ==  r)
            {
                found = true;
                break;
            }
        if (found == true)
        {
            r = -1;
            break;
        }
        a.push_back (r);
        if (ad > n)
            r = r / 2;
        if (ad < n)
            r = r + r / 2;
        if (ad == n)
            found = true;
        if (r % 5 != 0)
            r = r + 5 - (r % 5);*/