Решение задачи "Клад" с Acmp

С пояснением   Просмотров: 13


Найти закопанный пиратами клад просто: всё, что для этого нужно – это карта. Как известно, пираты обычно рисуют карты от руки и описывают алгоритм действий. Большая часть таких действий просто сводится к прохождению какого-то количества шагов в одном из восьми направлений (1 – север, 2 – северо-восток, 3 – восток, 4 – юго-восток, 5 – юг, 6 – юго-запад, 7 – запад, 8 – северо-запад) (см. рис). Длина шага в любом направлении равна 1.

Путешествие по такому пути обычно является прекрасным способом посмотреть окрестности, однако в наше время постоянной спешки ни у кого нет времени на это. Поэтому кладоискатели хотят идти напрямую в точку, где зарыт клад. Например, вместо того, чтобы проходить три шага на север, один шаг на восток, один шаг на север, три шага на восток, два шага на юг и один шаг на запад, можно пройти напрямую, использовав около 3.6 шага (см. рисунок).

Вам необходимо узнать точку, в которой находится клад согласно указаниям пиратов.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    double x = 0, y = 0;
    int n, a, b;
    cin >> n;
    while(n--){
        cin >> a >> b;
        if(a == 1)
            y += b;
        if(a == 3)
            x += b;
        if(a == 5)
            y -= b;
        if(a == 7)
            x -= b;
        if(a == 2){
             x += b * sqrt(2)/2;
             y += b * sqrt(2)/2;
        }
        if(a == 4){
             x += b * sqrt(2)/2;
             y -= b * sqrt(2)/2;
        }
        if(a == 6){
             x -= b * sqrt(2)/2;
             y -= b * sqrt(2)/2;
        }
        if(a == 8){
             x -= b * sqrt(2)/2;
             y += b * sqrt(2)/2;
        }
    }
    cout << fixed << setprecision(4) << x << " " << y;
    return 0;
}

         

 Администратор Photo Автор: Администратор


При направление равны: 2, 4, 6, 8, то воспользуемся формулой: количество шагов * sqrt(2) / 2. Соответственно запоминать знаки

Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться