Не могу понять задачу на C++

Задача

Здравствуйте, готовлюсь к олимпиаде по информатике. Во время решения данной задачи столкнулся с тем, что не понимаю откуда берётся такой результат. Написал программу которая находит по одному значению второе, а потом их S. Вот код:

#include <iostream>

using namespace std;

int main()
{

    setlocale(0, "");

    int  width = 0, height = 0, S = 0, K = 0;
    double part;

    cout << "Введите число K = " << endl;
    cin >> K;

    while (!(K >= 2) || !(K <= 100))
    {
        cout << "Число должно быть не меньше 2 и не больше 100!" << endl;
        cout << "Введите число K = " << endl;
        cin >> K;
    }

    if (K <= 50) {
        width = K;

        part = width / static_cast<double>(5);

        height = part * 3;

        // cout << part;
    }
    else {
        height = K;

        part = height / static_cast<double>(3);

        width = part * 5;
    }

    S = width * height;

    cout << "S = " << S << endl;
}

Ответы (2 шт):

Автор решения: Miracle-

Ну так, что сложного? Допустим мы ввели натуральное число num = 75 => length,тогда получаем примерно следующее: (num * num * width)/length;. И наоборот — то же самое, только меняем местами width <-> length.

→ Ссылка
Автор решения: rusgeli

Во-первых, вы перепутали отношения. Если K <= 50, то это ширина, а значит длина -- K / (3 / 5) или же K * (5 / 3). Во-вторых, поскольку вы работаете с целыми числами, необходимо все операции деления выполнять в самом конце, чтобы не потерять дробную часть.

Алгоритм примерно такой:

  • частично найти вторую сторону, умножив известную на числитель отношения (Если на вход дали 8: 8 * 5, результат 40);
  • найти произведение стороны на найденное число (8 * 40, результат 320);
  • найти результат целочисленного деления полученного на предыдущем этапе числа на знаменатель отношения (320 / 3, результат 106);
  • найти остаток от деления полученного на предыдущем этапе числа на знаменатель отношения (320 % 3, результат 2)

Дальше только вывод. Если результат последнего шага -- 0, то вывести только результат предпоследнего шага. Если нет, то вывести результат предпоследнего шага, последнего и знаменатель отношения

UPD: Дополнение от @ГерманБорисов: В задаче сказано про "минимальный возможный знаменатель", но так как и 3 и 5 являются простыми числами, шаг сокращения дроби можно пропустить.

→ Ссылка