Divide Number

Given integer N, you need to find four integers ABCD, such that they're all factors of 

N (A|N,B|N,C|N,D|N), and N=A+B+C+D. Your goal is to maximize A×B×C×D.

Example:

Input:  n = 8
Output: 16

Approach

C++

#include <bits/stdc++.h>
using namespace std;

long long divideNumber(long long n)
{
    vector<long longv;
    for (long long i = 1i * i <= ni++)
    {
        if (n % i == 0)
        {
            v.push_back(i);
            v.push_back(n / i);
        }
    }
    long long flag = 0;
    sort(v.begin(), v.end());
    long long max1 = INT_MIN;
    for (long long i = 0i < v.size(); i++)
    {
        for (long long j = ij < v.size(); j++)
        {
            for (long long k = jk < v.size(); k++)
            {
                long long y = n - v[i] - v[j] - v[k];
                if (y <= 0)
                    break;
                if (n % y == 0)
                {
                    max1 = max(max1v[i] * v[j] * v[k] * y);
                    flag = 1;
                }
            }
        }
    }
    if (flag == 1)
        return max1;
    else
        return -1;
}
int main()
{

    long long n = 8;

    cout << divideNumber(n<< "\n";

    return 0;
}


No comments:

Post a Comment