Матч
5, Размер телевизора (TVSize)
Телевизор характеризуется
размером диагонали diagonal в дюймах.
Форматом телевизионного изображения называется отношение ширины экрана к
высоте. По длине диагонали телевизора diagonal
и форматом изображения width / height следует найти длину и ширину
экрана. Искомые значения следует округлить вниз до ближайшего целого.
Класс: TVSize
Метод: vector<int>
calcSize(int diagonal, int height, int width)
Ограничения: 5 £ diagonal £ 1000,
1 £ height
£ 99, 2 £ width £ 100, width > height.
Вход. Длина диагонали телевизора diagonal,
числа height и width, задающие формат изображения width / height.
Выход. Массив из двух чисел, содержащий высоту и ширину экрана.
Пример входа
diagonal |
height |
width |
52 |
9 |
16 |
7 |
2 |
3 |
11 |
15 |
16 |
Пример выхода
{25, 45}
{3, 5}
{7, 8}
РЕШЕНИЕ
математика
Обозначим через w и h
соответственно высоту и ширину экрана. Поскольку w / h = width /
height, то w * height = h * width.
Диагональ телевизора равна diagonal =
. Подставив в последнее равенство значение h = w
* height / width, получим:
diagonal = = ,
откуда
w =
Аналогично
h =
ПРОГРАММА
#include <cstdio>
#include <cmath>
#include <vector>
using namespace std;
class TVSize
{
public:
vector<int> calcSize(int diagonal, int
height, int width)
{
vector<int> res;
res.push_back((int)(1.0*diagonal*height/sqrt(height*height+width*width)));
res.push_back((int)(1.0*diagonal*width/sqrt(height*height+width*width)));
return res;
}
};