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';
}
}
|
'Algorithm > Math' 카테고리의 다른 글
(C++) - 백준(BOJ) 6502번 : 동혁 피자 답 (0) | 2021.01.20 |
---|---|
(C++) - 백준(BOJ) 9020번 : 골드바흐의 추측 답 (0) | 2020.10.06 |
(C++) - 백준(BOJ) 2998번 : 8진수 (0) | 2020.01.08 |
(C++) - 백준(BOJ) 1789번 : 수들의 합 (0) | 2020.01.04 |
(C++) - 백준(BOJ) 1010번 : 다리놓기 (0) | 2019.01.25 |