알고리즘/BOJ

백준 1011번 Fly me to the Alpha Centauri

꾸준함. 2019. 3. 7. 15:28

문제 링크입니다: https://www.acmicpc.net/problem/1011


별다른 알고리즘을 요구하지 않지만 규칙을 찾아야했던 문제였습니다.


 최대 거리

워프 횟수 

최고 속도 

구현 

 1

 1

 4

2

121 

 9

12321 

 16

 7

1234321 

 25

123454321 

 N^2

2*N-1 

square(N) 

12345...N....54321 


결국, N을 구하고 최대 거리 N^2을 빼줬을 때 남은 거리에 대한 워프 횟수를 구해주면 되는 문제였습니다.

워프 횟수는 N(한 번 워프에 최대로 갈 수 있는 거리)으로 나눈 뒤 일의 자리에 대해 올림해주는 방식으로 처리해주면 됩니다.


#include <iostream>

#include <cmath>

using namespace std;

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0);

        int T;

        cin >> T;

 

        for (int t = 0; t < T; t++)

        {

                 int x, y;

                 cin >> x >> y;

 

                 long long i = 1;

                 while (i * i <= (y - x))

                         i++;

                 i--;

 

                 long long remaining = (y - x) - (i * i);

                 remaining = (long long)ceil((double)remaining / (double)i);

 

                 cout << i * 2 - 1 + remaining << "\n";

        }

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 2164번 카드2  (0) 2019.03.07
백준 10773번 제로  (0) 2019.03.07
백준 11365번 !밀비 급일  (0) 2019.03.04
백준 12738번 가장 긴 증가하는 부분 수열 3  (2) 2019.03.04
백준 1708번 볼록 껍질  (1) 2019.02.28