Cod sursa(job #477046)

Utilizator chibicitiberiuChibici Tiberiu chibicitiberiu Data 13 august 2010 09:35:34
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#define DEBUG 0
#include <fstream>
using namespace std;

#define iszero() { if (current == zeros) return -1; if (current > zeros) return countexc; }

inline int nr_exceptions(int zeros)
{
    int current = 0, countexc = 0, tmp;

    for (int l = 1; ; l++)
    {
        for (int i = 0; i < 5; i++) {
            for (int j = 6; j<=30; j+=6) {
                current += 6; countexc++; iszero();
            }
            current += 1; countexc++; iszero();
        }

        current += 1; countexc++; iszero();
        if (current == zeros) return -1;
        for (tmp = l; tmp > 0 && tmp % 5 == 0; tmp/=5) {
            current += 1; countexc++; iszero();
        }
    }
    return countexc;
}

int main()
{
    int P, r;
    ifstream in ("fact.in"); ofstream out ("fact.out");

    in>>P;
#if DEBUG == 1
    for (int i = 0; i < 10000; i++) {
        P = i;
        out<<"["<<i<<"] -> ";
#endif
        if (P == 0) out<<1;
        else {
            r = nr_exceptions(P+1);
            if (r == -1) out<<-1;
            else out<<(P+1-r)*5;
        }
#if DEBUG == 1
        out<<endl;
    }
#endif
    in.close();
    out.close();
}