Для отримання максимального розміру фотографії її потрібно масштабувати до межі рамки за меншою зі сторін, зберігаючи пропорційність. Оскільки за умовою задачі є дві рамки розміром m \times n і n \times m, необхідно перевірити обидва випадки та обрати найбільший.
Збільшимо фотографію на всю ширину та на всю довжину першої рамки, записавши відповідні коефіцієнти масштабування:
double k1 = (double)m / a;
double k2 = (double)n / b;З отриманих коефіцієнтів оберемо найменший, щоби не вилізти за межі рамки з іншої сторони:
double kmin1 = min(k1, k2);Повторимо для рамки іншого розміру й оберемо найбільший з коефіцієнтів:
k1 = (double)n / a;
k2 = (double)m / b;
double kmin2 = min(k1, k2);
double kmax = max(kmin1, kmin2);І тепер збільшимо розміри фотографії на цей коефіцієнт, вказавши необхідну точність після крапки, що і буде відповіддю:
cout << fixed << setprecision(3) << (a * kmax) << " " << (b * kmax) << endl;