- 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;
}