- toc {:toc}
λ¬Έμ
μ°νμ΄λ μ΄λ¦° μμ , μ§κ΅¬ μΈμ λ€λ₯Έ νμ±μμλ μΈλ₯λ€μ΄ μ΄μκ° μ μλ λ―Έλκ° μ€λ¦¬λΌ λ―Ώμλ€. κ·Έλ¦¬κ³ κ·Έκ° μ§κ΅¬λΌλ μΈμμ λ°μ λ΄λ € λμ μ§ 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μ§μ κΉμ§ μ νν λλ¬νλλ° νμν μ΅μνμ 곡κ°μ΄λ μ₯μΉ μλ νμλ₯Ό μΆλ ₯νλ€.
μΆμ² : https://www.acmicpc.net/problem/1011
νμ΄
- κ·μΉμ± λ¨Όμ μκ°. > μ²μ μμν λ 1κ΄λ λ§νΌλ§ κ° μ μκ³ λμ°©ν λλ 1κ΄λ λ§νΌλ§ κ° μ μλ€. > λμΉμ±μ΄ μλ€κ³ μκ°ν¨.
- λμΉμ μΌλ‘ μμ§μΌ λ λͺ κ°μ§ κ²½μ°λ₯Ό μκ°ν΄λ³΄λ caseλ₯Ό λΆλ₯ν μ μμμ.
- kκ° 1λΆν° μμν΄μ +1μ© μ¦κ°ν λ 2(k+1)λ³΄λ€ κ±°λ¦¬κ° ν¬λ©΄ νμλ 2λ²μ© μ¦κ°νκ³ , k+1 < D < 2(k+1)μ΄λ©΄ 2λ² μ¦κ°νκ³ λ μ΄μ μ΄λνμ§ μμλ λλ€. D < k+1μ΄λ©΄ 1λ² μ¦κ°νκ³ λ μ΄μ μ΄λνμ§ μμλ λλ€.
- μΌμ΄μ€ λΆλ₯λ₯Ό ν΅ν΄ λ¬Έμ ν΄κ²°
#include <iostream>
using namespace std;
int main()
{
int T, num, D, k, x, y;
cin >> T;
for(int i=0; i<T; i++)
{
cin >> x >> y;
num = 0;
k=1;
D = y - x;
if(D==1) num = D;
else
{
num += 2;
while(true)
{
if(D-2*k>2*(k+1))
{
D -= 2*k;
num+=2;
k++;
}
else if((k+1<D-2*k)&&(D-2*k<=2*(k+1)))
{
num+=2;
break;
}
else
{
num+=1;
break;
}
}
}
cout << num << endl;
}
return 0;
}