Problem:
Score : 300 points

Problem Statement

You are given an integer N.

Find a triple of positive integers h, n and w such that 4/N = 1/h + 1/n + 1/w.

If there are multiple solutions, any of them will be accepted.

Constraints

It is guaranteed that, for the given integer N, there exists a solution such that h,n,w \leq 3500.

Inputs

Input is given from Standard Input in the following format:

N

Outputs

Print a triple of positive integers h, n and w that satisfies the condition, in the following format:

h n w

Sample Input 1

2

Sample Output 1

1 2 2

4/2 = 1/1 + 1/2 + 1/2.

Sample Input 2

3485

Sample Output 2

872 1012974 1539173474040

It is allowed to use an integer exceeding 3500 in a solution.

Sample Input 3

4664

Sample Output 3

3498 3498 3498

Solution in PHP7 (7.0.15) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>

#define ld long double
#define ll long long int
#define ull unsigned long long int

using namespace std;

int main() {


    int N;
    cin >> N;
    int M = 3500;


//    float x = 1.23;
//    float integral_part = 0;
//    float fractional_part = modf(x, &integral_part);
    //cout << integral_part <<":"<< fractional_part << endl;

    // 全探索だとオーダーがO(n^3)
    // N, h, nが既知ならば，wは一意に定まるので，O(N^2)でおｋ

    int ans_h;
    int ans_n;
    int ans_w;
    bool fff = false;
    for (int h = 1; h <= M; ++h) {
        if (fff) { break; }
        for (int n = 1; n <= M; ++n) {
            if (4 * h * n - N * n - N * h == 0) { continue; }
//            float w = ( N/ 4) - h - n;
            float w = (N * h * n) / (4 * h * n - N * n - N * h);
//            float w = 1 / ((4 / N) - (1 / h) - (1 / n));
            bool f = false;
            bool ff = false;
            // wが正整数か
            float integral_part = 0;
            float fractional_part = modf(w, &integral_part);
//            cout << h << ":" << n << endl;
//            cout << w << ":" << fractional_part << endl;
            //cout << w << ":" << fractional_part << endl;
            if (fractional_part == 0.0) {
                f = true;
            }
//
//            if (w % 1 == 0) {
//                f = true;
//            }
            if (w > 0) {
                ff = true;
            }

            if (f && ff) {
                // cout << w << endl;
                ans_w = (int) w;
                ans_h = h;
                ans_n = n;
                fff = true;
                break;
            }
        }
    }
    cout << ans_h << " " << ans_n << " " << ans_w << endl;
    //cout << ans_h << ":" << ans_n << ":" << ans_w << endl;
}