https://www.acmicpc.net/problem/2858
๋ฌธ์
์๊ทผ์ด๋ ๊ธฐ์์ฌ ์ํ์ ํ๋ค. ์๊ทผ์ด์ ๋ฐฉ์ ํฌ๊ธฐ๋ L×W ์ด๋ค.
์์ ์๊ฐ์ ํ์ผ ์ฑ์ฐ๊ธฐ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ์ฐํ๋ ์๊ทผ์ด๋ ์์ ์ ๋ฐฉ๋ 1×1ํฌ๊ธฐ ํ์ผ๋ก ์ฑ์ฐ๋ ค๊ณ ํ๋ค. ์ด๋, ๊ฐ์ฅ์๋ฆฌ๋ ๋นจ๊ฐ์์ผ๋ก, ๋๋จธ์ง๋ ๊ฐ์์ผ๋ก ์ฑ์ฐ๋ ค๊ณ ํ๋ค.
์๋ ๊ทธ๋ฆผ์ ์๊ทผ์ด์ ๋ฐฉ์ ํฌ๊ธฐ๊ฐ 4×3์ผ ๋ ์ด๋ค.
์ด๋ ๋ ์๊ทผ์ด๋ค ๋ฐฉ์ ํ๊ทผ์ด๊ฐ ๋๋ฌ์๋ค. ํ๊ทผ์ด๋ ์๋ฆ๋ค์ด ํ์ผ ๋ฐฐ์น์ ๊ฐ๋๋ฐ์๋ค. ๋ค์ ๋ฐฉ์ผ๋ก ๋์์จ ํ๊ทผ์ด๋ ๋นจ๊ฐ์๊ณผ ๊ฐ์ ํ์ผ์ ๊ฐ์๋ ๊ธฐ์ตํ์ง๋ง, ๋ฐฉ์ ํฌ๊ธฐ๋ ๊ธฐ์ตํด๋ด์ง ๋ชปํ๋ค.
๋นจ๊ฐ์๊ณผ ๊ฐ์ ํ์ผ์ ๊ฐ์๊ฐ ์ฃผ์ด์ก์ ๋, ์๊ทผ์ด ๋ฐฉ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋นจ๊ฐ์ ํ์ผ์ ์ R๊ณผ ๊ฐ์ ํ์ผ์ ์ B๊ฐ ์ฃผ์ด์ง๋ค. (8 ≤ R ≤ 5000, 1 ≤ B ≤ 2,000,000)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์๊ทผ์ด๋ค ๋ฐฉ์ ํฌ๊ธฐ L๊ณผ W์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค. ๋ง์ฝ, ๋ ์๊ฐ ๋ค๋ฅด๋ค๋ฉด, ํฐ ์๊ฐ L์ด ๋๊ณ ์์ ์๊ฐ W์ด ๋๋ค. ํญ์ ์ ๋ต์ด ์ ์ผํ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
ํ์ด
8%์์ ํ๋ ธ๋ค๋ฉด l w ์์๋ฅผ ์๊ฐํด๋ณด์
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int r, int b) {
vector<int> ans;
int tot = r+b;
for(int i=1; i<tot; i++) {
if(tot%i != 0) continue;
int l = i, w = tot/i;
int brown = (l-2)*(w-2);
if(brown == b) {
ans.push_back(max(l, w));
ans.push_back(min(w, l));
}
}
return ans;
}
int main() {
int r, b;
cin >> r >> b;
vector<int> ans = solution(r, b);
cout << ans[0] << " " << ans[1];
return 0;
}
/*
*/
'๐๏ธ ICPC Sinchon > Binary Search' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 2805๋ฒ: ๋๋ฌด ์๋ฅด๊ธฐ (0) | 2023.11.06 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1107๋ฒ: ๋ฆฌ๋ชจ์ปจ (0) | 2023.01.21 |
[BOJ] ๋ฐฑ์ค 2110๋ฒ: ๊ณต์ ๊ธฐ ์ค์น (0) | 2022.10.13 |
[BOJ] ๋ฐฑ์ค 10816๋ฒ: ์ซ์ ์นด๋ 2 (0) | 2022.10.13 |
[BOJ] ๋ฐฑ์ค 1920๋ฒ: ์ ์ฐพ๊ธฐ (0) | 2022.10.13 |