Cod sursa(job #1028192)

Utilizator hanganflorinHangan Florin hanganflorin Data 13 noiembrie 2013 19:17:48
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;

ifstream is("fact.in");
ofstream os("fact.out");

int st = 1, dr = 1000000000;
const int d[] = { 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625 };
int p, m, nr;
bool Corect(int x);
bool Ver(int x);

int main()
{
    is >> p;
    while ( st < dr )
    {
        m = st + (dr-st)/2;
        if ( Corect(m) )
            dr = m;
        else
            st = m+1;
    }
    if ( Ver(st) )
        os << st;
    else
        os << -1;
    is.close();
    os.close();
    return 0;
}
bool Corect(int x)
{
    int s = 0, v = x;
    for ( int i = 0; v; ++i )
    {
        s += x / d[i];
        v /= 10;
    }
    if ( s >= p )
        return true;
    return false;

}
bool Ver(int x)
{
    int s = 0, v = x;
    for ( int i = 0; v; ++i )
    {
        s += x / d[i];
        v /= 10;
    }
    if ( s == p )
        return true;
    return false;
}