본문 바로가기

Algorithm/Math

(C++) - 백준(BOJ) 1011번 : Fly me to the Alpha Centauri 답

반응형

https://www.acmicpc.net/problem/1011

 

1011번: Fly me to the Alpha Centauri

우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행��

www.acmicpc.net

풀이방법 : 

distance = y - x
마지막은 무조건 1광년을 선택해야 한다.

거리,선택한 광년의 흐름,선택횟수 순으로 정리해봤습니다.
01 : 1  선택횟수 :  1
02 : 1 -> 1  선택횟수 : 2
03 : 1 -> 1 -> 1 선택횟수 : 3
04 : 1 -> 2 -> 1 선택횟수 : 3 수의 증감이 ^형태로 되어 있어 대칭을 이룰 때 2^2
05 : 1 -> 2 -> 1 -> 1 선택횟수 : 4
06 : 1 -> 2 -> 2 -> 1  선택횟수 : 4
07 : 1 -> 2 -> 2 -> 1 -> 1 선택횟수 : 5
08 : 1 -> 2 -> 2 -> 2 -> 1 선택횟수 : 5
09 : 1 -> 2 -> 3 -> 2 -> 1 선택횟수 : 5 대칭 3^2
10 : 1 -> 2 -> 2 -> 2 -> 2 -> 1 선택횟수 : 6
11 : 1 -> 2 -> 3 -> 2 -> 2 -> 1 선택횟수 : 6
12 : 1 -> 2 -> 3 -> 3 -> 2 -> 1 선택횟수 : 6
13 : 1 -> 2 -> 3 -> 2 -> 2 -> 2 -> 1 선택횟수 : 7
14 : 1 -> 2 -> 3 -> 3 -> 2 -> 2 -> 1 선택횟수 : 7
15 : 1 -> 2 -> 3 -> 3 -> 3 -> 2 -> 1 선택횟수 : 7
16 : 1 -> 2 -> 3 -> 4 -> 3 -> 2 -> 1 선택횟수 : 7 대칭 4 ^ 2 -> 선택횟수 n * 2 - 1

 

Code :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#define ll long long
using namespace std;
int main(){
    ll t,x,y;
    cin >> t;
    while(t--){
        cin >> x >> y;
        ll distance = y - x;
        ll i = 0,j = 0, cnt = 0;
        while(i < distance) i += ++cnt*2;
        if(i - distance <cnt) cout << cnt*2;
        else cout << cnt * 2 - 1;
        cout << '\n';
    }
}