Cod sursa(job #3218543)

Utilizator cristinfoBargan Cristian cristinfo Data 27 martie 2024 12:42:24
Problema Factorial Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream f("fact.in");
    ofstream g("fact.out");

    int P, i;
    long long sum = 0, answear =0;
    int factor5 = 0, limita = 0;
    int v[13], times[13];
    v[0] = 0;
    f >> P;

    if(P == 0)
        {
            g << 1;
            return 0;
        }
    else
        {
        while(P > sum)
            {
                sum += limita * 5 + 1;
                limita = limita * 5 + 1;
                times[factor5] = 0;
                v[++factor5] = limita;
            }


        if(P == v[factor5])
        {
                    limita = 1;
        for(i = 1; i <= factor5; i++)
        {
            limita = limita * 5;

        }
        g << limita;
            return 0;
        }
        else
        {
            sum = 0;
            factor5 -= 1;
            times[0] = 0;
            v[0] = 0;

            for(i = factor5; i >= 1; i--)
            {
                if(times[i] == 4) continue;
                if(sum + v[i] == P)
                {
                    ++times[i];
                    sum += v[i];
                    break;
                } else if (sum + v[i] < P)
                {
                    sum += v[i];
                    times[i]++;
                    ++i;
                }
            }
        }

        if(P != sum) g << -1;
        else
        {
            limita = 5;
            for(i = 1; i <= factor5; i++)
            {
                answear += limita * times[i];
                limita = limita * 5;
            }
            g << answear;

        }
        }

    return 0;
}