1011 - Fly me to alpha Centauri

1011 문제 링크

접근법

우주선을 이동시키고 나머지 거리를 계산하는 방법 보다는 거리를 구하고 그에 맞는 장치의 작동횟수를 계산하는 수식을 얻어서 해결하려 하였다.


#include <iostream>
#include <math.h>
using namespace std;



int main()
{

    double x, y, max=0, d;
    int count;

    cin >> count;

    for(int i =0; i< count; i++)
    {
        cin >> x;
        cin >> y;
        d = y - x;

        max = (int)sqrt(d);

        if(max == 1)
        {
            cout << d << endl;
        }
        else if(max*max == d)
        {
            cout << 2*max -1 << endl;
        }
        else if(d <= (max*max + max))
        {
            cout << 2*max << endl;
        }
        else
        {
            cout << 2*max+1 << endl;
        }

    }

    return 0;
}

결론

문제를 해결하는데 있어서 입력과 출력간의 수식을 구하는것이 가장 효율적인 방법인것 같다.

업데이트: