๋ฌธ์
์ฐํ์ด๋ ์ด๋ฆฐ ์์ , ์ง๊ตฌ ์ธ์ ๋ค๋ฅธ ํ์ฑ์์๋ ์ธ๋ฅ๋ค์ด ์ด์๊ฐ ์ ์๋ ๋ฏธ๋๊ฐ ์ค๋ฆฌ๋ผ ๋ฏฟ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฐ ์ง๊ตฌ๋ผ๋ ์ธ์์ ๋ฐ์ ๋ด๋ ค ๋์ ์ง 23๋ ์ด ์ง๋ ์ง๊ธ, ์ธ๊ณ ์ต์ฐ์ ASNA ์ฐ์ฃผ ๋นํ์ฌ๊ฐ ๋์ด ์๋ก์ด ์ธ๊ณ์ ๋ฐ์ ๋ด๋ ค ๋๋ ์๊ด์ ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค.
๊ทธ๊ฐ ํ์นํ๊ฒ ๋ ์ฐ์ฃผ์ ์ Alpha Centauri๋ผ๋ ์๋ก์ด ์ธ๋ฅ์ ๋ณด๊ธ์๋ฆฌ๋ฅผ ๊ฐ์ฒํ๊ธฐ ์ํ ๋๊ท๋ชจ ์ํ ์ ์ง ์์คํ ์ ํ์ฌํ๊ณ ์๊ธฐ ๋๋ฌธ์, ๊ทธ ํฌ๊ธฐ์ ์ง๋์ด ์์ฒญ๋ ์ด์ ๋ก ์ต์ ๊ธฐ์ ๋ ฅ์ ์ด ๋์ํ์ฌ ๊ฐ๋ฐํ ๊ณต๊ฐ์ด๋ ์ฅ์น๋ฅผ ํ์ฌํ์๋ค. ํ์ง๋ง ์ด ๊ณต๊ฐ์ด๋ ์ฅ์น๋ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธ๊ฒฉํ๊ฒ ๋๋ฆด ๊ฒฝ์ฐ ๊ธฐ๊ณ์ ์ฌ๊ฐํ ๊ฒฐํจ์ด ๋ฐ์ํ๋ ๋จ์ ์ด ์์ด์, ์ด์ ์๋์๊ธฐ์ k๊ด๋ ์ ์ด๋ํ์์ ๋๋ k-1 , k ํน์ k+1 ๊ด๋ ๋ง์ ๋ค์ ์ด๋ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์ด ์ฅ์น๋ฅผ ์ฒ์ ์๋์ํฌ ๊ฒฝ์ฐ -1 , 0 , 1 ๊ด๋ ์ ์ด๋ก ์ ์ด๋ํ ์ ์์ผ๋ ์ฌ์ค์ ์์ ํน์ 0 ๊ฑฐ๋ฆฌ๋งํผ์ ์ด๋์ ์๋ฏธ๊ฐ ์์ผ๋ฏ๋ก 1 ๊ด๋ ์ ์ด๋ํ ์ ์์ผ๋ฉฐ, ๊ทธ ๋ค์์๋ 0 , 1 , 2 ๊ด๋ ์ ์ด๋ํ ์ ์๋ ๊ฒ์ด๋ค. ( ์ฌ๊ธฐ์ ๋ค์ 2๊ด๋ ์ ์ด๋ํ๋ค๋ฉด ๋ค์ ์๊ธฐ์ 1, 2, 3 ๊ด๋ ์ ์ด๋ํ ์ ์๋ค. )
๊น์ฐํ์ ๊ณต๊ฐ์ด๋ ์ฅ์น ์๋์์ ์๋์ง ์๋ชจ๊ฐ ํฌ๋ค๋ ์ ์ ์ ์๊ณ ์๊ธฐ ๋๋ฌธ์ x์ง์ ์์ y์ง์ ์ ํฅํด ์ต์ํ์ ์๋ ํ์๋ก ์ด๋ํ๋ ค ํ๋ค. ํ์ง๋ง y์ง์ ์ ๋์ฐฉํด์๋ ๊ณต๊ฐ ์ด๋์ฅ์น์ ์์ ์ฑ์ ์ํ์ฌ y์ง์ ์ ๋์ฐฉํ๊ธฐ ๋ฐ๋ก ์ง์ ์ ์ด๋๊ฑฐ๋ฆฌ๋ ๋ฐ๋์ 1๊ด๋ ์ผ๋ก ํ๋ ค ํ๋ค.
๊น์ฐํ์ ์ํด x์ง์ ๋ถํฐ ์ ํํ y์ง์ ์ผ๋ก ์ด๋ํ๋๋ฐ ํ์ํ ๊ณต๊ฐ ์ด๋ ์ฅ์น ์๋ ํ์์ ์ต์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์ ๋ ฅ
์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ํ์ฌ ์์น x ์ ๋ชฉํ ์์น y ๊ฐ ์ ์๋ก ์ฃผ์ด์ง๋ฉฐ, x๋ ํญ์ y๋ณด๋ค ์์ ๊ฐ์ ๊ฐ๋๋ค. (0 ≤ x < y < 231)
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด x์ง์ ์ผ๋ก๋ถํฐ y์ง์ ๊น์ง ์ ํํ ๋๋ฌํ๋๋ฐ ํ์ํ ์ต์ํ์ ๊ณต๊ฐ์ด๋ ์ฅ์น ์๋ ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
3
0 3
1 5
45 50
์์ ์ถ๋ ฅ 1
3
3
4
ํ์ด
(๋์ฒด ์ด๊ฑธ ์ด๋ป๊ฒ ํ์ด์ผ๋๋์ง ๊ณ ๋ฏผ์ ์์ฒญ ํ๋๋ฐ... ์ฌ์ค ๊ตฌ๊ธ๋ง์ ๋์์ ์กฐ๊ธ ๋ฐ์๋ค)
๊ท์น์ฑ์ ์ฐพ๊ธฐ ์ํด XY์ฌ์ด ๊ฑฐ๋ฆฌ๊ฐ 1์ผ ๋ ๋ถํฐ ์ง์ ํ๋ฅผ ๋ง๋ค์ด ๋ณด๊ธฐ๋ก ํ๋ค
ํ๋ฅผ ์ดํด๋ณด๋ฉด ์ด ๊ฑฐ๋ฆฌ๋ฅผ ๋๋๋ ๊ฒฝ๊ณ๋ฅผ ์ ์ ์๋ค.
- n์ ์ ๊ณฑ์ผ ๋ (2์ ์ ๊ณฑ 4, 3์ ์ ๊ณฑ 9, …)
- n์ ์ ๊ณฑ์ผ ๋ + n (2์ ์ ๊ณฑ 4 + 2 ์ธ 6, 3์ ์ ๊ณฑ 9 + 3์ธ 12, …)
์ด ๋๊ฐ์ง ๊ฒฝ๊ณ๋ก ์ด ์ด๋ ํ์๊ฐ ๋ฐ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
(์๋ฅผ๋ค์ด 9 ~ 15 ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ 9, 10~12, 12 ~ 15 ์ธ ๊ตฌ๊ฐ์ผ๋ก ๋๋์ด์ง๋ค)
์ฒซ๋ฒ์งธ ๊ฒฝ๊ณ์ ์ , ์ฆ n์ ์ ๊ณฑ์ผ ๋๋ 2 * ๋ฃจํธn - 1 ํ ์ด๋ํ๊ณ
์ฒซ๋ฒ์งธ ๊ฒฝ๊ณ์ ๋๋ฒ์งธ ๊ฒฝ๊ณ์ ์ฌ์ด๋ 2 * ๋ฃจํธn ํ ์ด๋ํ๋ฉฐ
๋๋ฒ์งธ ๊ฒฝ๊ณ ์ดํ, n+1์ ์ ๊ณฑ ์ ๊น์ง๋ 2 * ๋ฃจํธ + 1 ํ ์ด๋ํ๋ค.
1. X์ Y๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉด ์ฌ์ด ๊ฑฐ๋ฆฌ distance๋ฅผ ๊ตฌํ๋ค.
2. distance์ ๋ฃจํธ๊ฐ root๋ฅผ ๊ตฌํ๋ค. root๋ฅผ int๋ก ํ๋ณํ ํ๋ฉด ์ ์ ๋ถ๋ถ๋ง ๋จ๋๋ค.
3. root์ ์ ๊ณฑ์ด distance์ ๊ฐ์์ง ํ์ธํ๋ค. ๊ฐ๋ค๋ฉด ์ต์ ์ด๋ ํ์๋ 2 * root - 1
=> Math.sqrt() / Math.pow() ๋ฉ์๋ ์ฌ์ฉ
4. root์ ์ ๊ณฑ๊ณผ distance์ ์ฐจ์ด๊ฐ root๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ง ํ์ธํ๋ค. ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด ์ต์ ์ด๋ ํ์๋ 2 * root
5. ๋๋จธ์ง๋ 2 * root + 1ํ ์ด๋ํ๋ค.
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class B1011 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = sc.nextInt();
int count = 0;
for(int i = 0; i < t; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
int distance = y - x;
int root = (int)Math.sqrt(distance);
if(distance - Math.pow(root, 2) == 0) {
count = 2 * root -1;
} else if(distance - Math.pow(root, 2) <= root) {
count = 2 * root;
} else {
count = 2 * root + 1;
}
bw.write(Integer.toString(count));
bw.newLine();
}
bw.flush();
}
}