안녕하세요. 오늘은 TV크기를 잴 거예요.

문제

https://www.acmicpc.net/problem/1297

아이디어

D와 H,W가 주어지면 높이를 Hk, 너비를 Wk라고 둡시다. 그러면 피타고라스 정리에 의해서 D^2=(H^2+W^2)k^2가 됩니다. 그러면 k는 sqrt(D^2/(H^2+W^2))이 됩니다. 그러면 높이는 Hsqrt(D^2/(H^2+W^2))이 되고 너비는 Wsqrt(D^2/(H^2+W^2))이 됩니다. 이 값을 정수형으로 바꿔서 출력해주면 됩니다.

소스코드

#include <iostream>
#include <cmath>
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    double D, H, W, ansH, ansW;
    cin >> D >> H >> W;
    ansH = H * sqrt(D * D / (H * H + W * W));
    ansW = W * sqrt(D * D / (H * H + W * W));

    cout << floor(ansH) << ' ' << floor(ansW);
}


감사합니다.

0개의 댓글