안녕하세요. 오늘은 기숙사 바닥을 채울 거예요.

문제

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

아이디어

L, W를 구하면 됩니다.

B=(L-2)(W-2)가 되고 R=2(L-1+W-1)이 됩니다.
그리고 R+B는 LW가 됩니다.
그래서 곱이 R+B가 되는 두 수가 L,W의 조건을 만족시킨다면 그 수를 출력해주면 됩니다.

소스코드

#include <iostream>
using namespace std;


int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    long long R, B, L, W;

    cin >> R >> B;
    for (W = 1; W * W <= R + B; W++)
    {
        L = (R + B) / W;
        if (B == (L - 2) * (W - 2) && R == 2 * (L - 1 + W - 1))
        {
            cout << L << ' ' << W;
            return 0;
        }
    }
}


감사합니다.

0개의 댓글