Cod sursa(job #1981908)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 17 mai 2017 10:02:58
Problema Factorial Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
/*
    ELEV: CRACIUN FLAVIU

    Aceasta implementare calculeaza puterea lui 5 din n factorial,
    deoarece puterile lui 5 sunt mai putin numeroase decat puterile lui 2
    astfel calculeaza din 5 in 5 si daca x e egal cu p atunci returneaza i

    COMPLEXITATE: O(P) unde p e numarul dat in problema
*/

#include <iostream>
#include <fstream>

using namespace std;

int cinciuri(int x)
{
    int k = 0;
    while(x%5==0)
        ++k,
        x /= 5;
    return k;
}

int zerouri(int x)
{
    int k = 0;
    for (int i = 5; i <= x; i += 5)
        k += cinciuri(i);
    return k;
}

int functia_cu_p(int x)
{
    if(x == 0)
        return 1;
    if(x == 1)
        return 5;
    if(x == 2)
        return 10;
    int k = 2;
    for (int i = 15; k < x; i += 5){
        k += cinciuri(i);
        if(k == x)
            return i;
        if(k > x)
            return -1;
    }
    return -1;
}

int main()
{
    ifstream fin ("fact.in");
    ofstream fout ("fact.out");
    int p;
    fin >> p;
    fout << functia_cu_p(p);
    fin.close();
    fout.close();
    return 0;
}