Задача A287
Условие задачи
Даны целые числа [latex] a_{1}\dots a_{n} [/latex]. Все члены последовательности с четными номерами, предшествующие первому по порядку члену со значением [latex] max(a_{1}\dots a_{n}) [/latex], домножить на [latex] max(a_{1}\dots a_{n}) [/latex].
Тестирование
№ | Входные данные | Выходные данные |
1. | 1 2 3 4 3 2 1 | 1 8 3 4 3 2 1 |
2. | 1 2 3 4 4 2 5 5 3 3 2 1 | 1 10 3 20 4 10 5 5 3 3 2 1 |
3. | 11 4 6 7 9 | 11 4 6 7 9 |
4. | 9 8 10 1 2 4 5 4 6 13 | 9 104 10 13 2 52 5 52 6 13 |
5. | -10 -4 -6 -7 -3 0 -1 -20 | -10 0 -6 0 -3 0 -1 -20 |
Реализация
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include "iostream" #include <vector> using namespace std; int main() { vector <int> a; int n; int max_i = 0; //номер максимального элемента while (cin >> n) a.push_back(n); for (int i=0; i < a.size(); i++) { if (a[i] > a[max_i]) max_i=i; } for (int i=0; i<max_i; i++) { if (i % 2 != 0) a[i] *= a[max_i]; } for (int i = 0; i < a.size(); i++) cout << a[i] << " "; return 0; } |
Алгоритм решения
Считываем все целые числа до конца входного потока и записываем их в вектор [latex] a [/latex]. Затем:
- Сравниваем между собой каждый элемент вектора, и если находится большее значение, то запоминается номер данного элемента.
- Далее проходим все члены последовательности, предшествующие первому по порядку члену с максимальным значением.
- Умножаем все элементы с четными номерами на [latex] max(a_{1}\dots a_{n}) [/latex].
Ссылки
Код на ideaone.
Засчитываю, только поправьте, пожалуйста, текст.
— «Сравниваем между собой каждый элемент вектора» — фраза не только не соответствует коду, но и вовсе не имеет смысла.
— «если находится большее значение» — большее чего?