Cod sursa(job #2442107)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 22 iulie 2019 18:05:32
Problema Aliens Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;

struct fractie
{
    int p1, p2, p3, p11, p22, p33;
}v[55];

int solve(int index, int p1, int p2, int p3)
{
    if (index > n)
    {
        if (p1 >= 0 && p2 >= 0 && p3 >= 0)
        {
            return pow(2, p1)*pow(3,p2)*pow(5,p3);
        }
        return 0;
    }
    return max(solve(index + 1, p1, p2, p3), solve(index + 1, p1 + v[index].p1 - v[index].p11, p2 + v[index].p2 - v[index].p22, p3 + v[index].p3 - v[index].p33));
}

int main()
{
    fin >> n;
    for (int i = 1; i <= n; ++i)
    {
        int a, b;
        fin >> a >> b;
        while (a % 2 == 0) ++v[i].p1, a = a / 2;
        while (a % 3 == 0) ++v[i].p2, a = a / 3;
        while (a % 5 == 0) ++v[i].p3, a = a / 5;
        while (b % 2 == 0) ++v[i].p11, b = b / 2;
        while (b % 3 == 0) ++v[i].p22, b = b / 3;
        while (b % 5 == 0) ++v[i].p33, b = b / 5;
    }
    fout << solve(1, 0, 0, 0);
    return 0;
}