Матч 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;

  }

};