Задача
Даны действительные числа [latex]{a}_{1},\ldots,{a}_{30}[/latex].
Получить: [latex]\min\left({a}_{1}{a}_{16},{a}_{2}{a}_{17},\ldots,{a}_{15}{a}_{30}\right)[/latex]
Тесты
Входные данные | Выходные данные |
2 4 8 1 3 5 4 8 1 10 5 2 4 9 3 9 1 5 4 3 7 8 2 11 1 4 5 10 3 8 | 4 |
0 8 9 6 11 2 5 3 6 9 8 8 5 20 1 4 8 12 15 7 6 31 0 5 14 5 0 14 11 2 | 0 |
8 2 8 2 8 2 8 2 8 2 8 2 8 2 8 2 8 2 8 2 8 2 8 2 8 2 8 2 8 2 | 16 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> #include <vector> using namespace std; int main() { vector <double> a; double b; while (cin >> b){ a.push_back(b); } double min=a[0]*a[a.size()/2]; for(int i=0; i<(a.size())/2; i++){ if (a[i]*a[(a.size()/2+i)]< min){ min = a[i]*a[(a.size()/2+i)]; } } cout << min; return 0; } |
Код на ideone.com
Решение
Для решения задачи мы условно разделяем исходную последовательность действительных чисел на две подпоследовательности.: [latex]{a}_{1},\ldots,{a}_{15}[/latex] и [latex]{a}_{16},\ldots,{a}_{30}[/latex]. Длина подпоследовательностей в два раза меньше длины исходной последовательности. Таким образом, разность индексов элементов, которые необходимо перемножить, равна длине подпоследовательности. Тогда перемножаем необходимые элементы и находим минимальное значение из полученных результатов.