안녕하세요. 오늘은 기숙사 바닥을 채울 거예요.
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;
}
}
}
감사합니다.