1. Главная
  2. Библиотека
  3. Программирование
  4. Напиши на c++ используя дискретное преобразование Фурье...
Решение задачи

Напиши на c++ используя дискретное преобразование Фурье: Двое дуэлянтов решили выбрать в качестве места проведения поединка тёмную аллею. Вдоль этой аллеи растёт n деревьев и кустов. Расстояние между соседними объектами равно одному метру. Дуэль решили

  • Программирование

Условие:

Напиши на c++ используя дискретное преобразование Фурье: Двое дуэлянтов решили выбрать в качестве места проведения поединка тёмную аллею. Вдоль этой аллеи растёт n деревьев и кустов. Расстояние между соседними объектами равно одному метру. Дуэль решили проводить по следующим правилам. Некоторое дерево выбирается в качестве стартовой точки. Затем два дерева, находящихся на одинаковом расстоянии от исходного, отмечаются как места для стрельбы. Дуэлянты начинают движение от стартовой точки в противоположных направлениях. Когда соперники достигают отмеченных деревьев, они разворачиваются и начинают стрелять друг в друга.
Дана схема расположения деревьев вдоль аллеи. Требуется определить количество способов выбрать стартовую точку и места для стрельбы согласно правилам дуэли.
Формат входных данных
Задана одна строка, состоящая из символов «0» и «1» - схема аллеи. Деревья обозначаются символом «1», а кусты - символом «0». Длина строки не превосходит 100000 символов.
Формат выходных данных
Выведите количество способов выбрать стартовую точку и места для
стрельбы согласно правилам дуэли.
Пример:
Стандартный ввод:
101010101
Вывод:
4
Ввод:
101001
Вывод:
0

Решение:

Для решения задачи с использованием дискретного преобразования Фурье (ДПФ) мы можем воспользоваться свойствами симметрии и периодичности. Однако, в данном случае, задача может быть решена более простым способом, без необходимости использования ДПФ. Мы можем просто пройтись по строке и подсчитать количество возможных стартовых точек и мест для стрельбы. Вот шаги, которые мы будем выполнять: 1. Прочитаем входную строку, представляющую собой схему аллеи. 2. Найдем все позиции деревьев (символы 1) и сохраним их в вектор. 3. Для каждой пары деревьев, находящихся на одинаковом расстоянии от старто...

Теперь давайте объясним, как работает этот код: 1. Мы считываем строку, представляющую аллею. 2. Затем мы проходим по строке и сохраняем индексы всех деревьев (символов 1) в вектор . 3. Далее, мы перебираем все пары деревьев. Для каждой пары деревьев и мы вычисляем расстояние между ними. 4. Мы проверяем, существует ли дерево на расстоянии влево от и дерево на расстоянии вправо от . 5. Если оба условия выполняются, мы увеличиваем счетчик . 6. В конце мы выводим количество способов выбрать стартовую точку и места для стрельбы. Таким образом, мы получаем решение задачи.

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет