А282(а)

Задача

Даны действительные числа [latex]a_1,a_2, …,a_{2n}[/latex]. Получить:
[latex]a_1,a_{n+1},a_2,a_{n+2}, …,a_n,a_{2n}[/latex]

Тесты

Ввод
Вывод
1 2 3 4 5 6 7 8 9 10 1 6 2 7 3 8 4 9 5 10
8 25 3 7 8 3 25 7
5.5 6.025 2.387 1.0986 7.762 3.5958

5.5 1.0986 6.025 7.762 2.387 3.5958

Хороший код

Решение

Считываем действительные числа в первый вектор и узнаем [latex]n[/latex]. Затем поочередно вписываем элементы и элементы с измененным индексом в другой вектор, пока счетчик не будет равен [latex]n[/latex] и выводим полученный вектор, он и будет ответом.

Лучший код на C++

Лучший код на Java

 

Решение

В первом способе мы задавали два вектора, чем естественно увеличивали занимаемую память. C помощью функции insert() мы можем вставлять элементы в вектор, не используя дополнительных средств. Однако мы сталкиваемся с тем, что функция по определению вставляет в вектор константу из-за чего наш цикл не будет правильно работать. Чтобы изменять параметр вводимого элемента, заводим отдельный счетчик. Теперь каждый [latex]2*i+1[/latex]-ый шаг мы вставляем [latex]n+b+i[/latex]-ый элемент вектора. Проведем resize() вектора чтобы убрать лишние элементы и получим готовый результат.

Ссылки

  1. Хорошее решение на C++
  2. Лучшее решение на C++
  3. Лучшее решение на Java
  4. Условие в задачнике Абрамова(стр.120)

A334(а). Вложенная сумма

Задача

Вычислить: [latex]\sum \limits_{i=1}^{m}\sum \limits_{j=1}^{n}\frac{1}{i+j^2}[/latex], где [latex]m,n[/latex] — вводимые нами числа.

Тесты

Вход([latex]m,n[/latex]) Выход([latex]S[/latex])
40 20 13.6458
100 50 24.6458
200 25 31.7764
1000 282 89.8078

Код на C++

Код на Java

 

 

Решение

Вводим два оператор цикла for, один вложенный в другой. Задаем наше выражение, а затем суммируем его, согласно циклу.

Ссылки

  1. Задание из сборника Абрамова
  2. Решение на C++
  3. Решение на Java
  4. Результат на WolframAlpha

 

А329. Квадрат суммы цифр числа

Задача

Задача из сборника задач по программированию Абрамова С.А. 2000 г.
Даны натуральные числа [latex]n[/latex], [latex]m[/latex]. Получить все меньшие [latex]n[/latex] натуральные числа, квадрат суммы цифр которых равен [latex]m[/latex].

Входные данные:

Два положительных числа [latex]n[/latex] и [latex]m[/latex].

Выходные данные:

Все целые числа из [latex]\left( 0,n \right)[/latex], удовлетворяющие условию.

Тесты

 Входные данные  Выходные данные
[latex]n[/latex] [latex]m[/latex]
 1  1234  9 3 12 21 30 102 111 120 201 210 300 1002 1011 1020 1101 1110 1200
 2 100  4 2 11 20
 3  49  49 7 16 25 34 43
 4 1000  1 1 10 100

Код программы

Решение

Для того, чтоб найти каждую цифру числа будем искать остаток от деления на [latex]10[/latex], которым является последняя цифра числа, а затем делить число нацело на [latex]10[/latex], чтоб предпоследняя цифра стала последней. Будем повторять эту операцию пока число не равно [latex]0[/latex]. Все полученные цифры числа складываем. Таким способом будем искать сумму цифр каждого целого числа от [latex]1[/latex] до [latex]n-1[/latex], параллельно возводя полученную сумму в квадрат, а результат сравнивая с [latex]m[/latex].

Ссылки

А282в

Задача

Даны действительные числа [latex]a_{1}, a_{2}, \cdots, a_{2n}.[/latex] Получить [latex]a_{1}+a_{2n}, a_{2}+ a_{2n-1}, \cdots, a_{n}+a_{n+1}.[/latex]

Тесты

Входные данные Выходные данные
 2 4 6 2 2 9 7 5 7 11 15 4
1 2 2 1 1 4
139 64 15 20 10 5 6 1 140 70 20 30
 111111 22222 33333 11 25 4 111115 22247 33344
15 7 6 9 24 13
2 2 4
138 56 78 3 141 134

Код программы

Решение задачи

Считаем все числа [latex]a_{1}, \cdots, a_{2n}[/latex] в ранее объявленный вектор, пока есть, что считывать. Поскольку мы используем класс vector и цикл  while (cin >> b)  и метод push_back(), в числе [latex]n[/latex] нет необходимости, а во входых данных присутствуют только сами числа [latex]a_{1}, \cdots, a_{2n}[/latex]. Далее, чтобы узнать количество элементов в векторе, будем использовать метод size(). Остается только выводить в цикле сумму двух текущих чисел, начиная с краев вектора и сдвигаясь в каждом витке на элемент ближе к центру вектора, пока не дойдем до центра.

Ссылки

Задача взята из задачника С. Абрамова;
Ссылка на код на ideone.com.

А282б

Условия задачи

Даны действительные числа [latex]a_{1}[/latex], [latex]a_{2}[/latex], [latex]\ldots[/latex], [latex]a_{2n}[/latex]. Получить [latex]a_{1}[/latex], [latex]a_{2n}[/latex], [latex]a_{2}[/latex], [latex]a_{2n-1}[/latex], [latex]a_{3}[/latex], [latex]\ldots[/latex], [latex]a_{n}[/latex], [latex]a_{n+1}[/latex].

Данную задачу можно найти здесь.

Входные данные

Последовательность действительных чисел [latex]a_{1}[/latex], [latex]a_{2}[/latex], [latex]\ldots[/latex], [latex]a_{2n}[/latex].

Выходные данные

Последовательность действительных чисел [latex]a_{1}[/latex], [latex]a_{2n}[/latex], [latex]a_{2}[/latex], [latex]a_{2n-1}[/latex], [latex]a_{3}[/latex], [latex]\ldots[/latex], [latex]a_{n}[/latex], [latex]a_{n+1}[/latex] .

Тесты

Входные данные Выходные данные
1 1 2 3 4 5 6 1 6 2 5 3 4
2 0 0 0 0 0 1 0 1 0 0 0 0
3 3 12 42 -6 15 0 0 0 501 20 20 20 3 20 12 20 42 20 -6 501 15 0 0 0
4 42 0 17 -2.6 -54 41888 0.25 13 1.3333 -284.73 42 -284.73 0 1.3333 17 13 -2.6 0.25 -54 41888
5 0 1 -1 0 1 -1 97 113 -7.777 0 48 -69 0 -69 1 48 -1 0 0 -7.777 1 113 -1 97

Код

Код на ideone можно найти здесь.

Ход решения

Считываем все числа из входного потока и записываем их в вектор исходной последовательности sequence. Результатом работы нашей программы должна быть новая последовательность действительных чисел result_sequence, которая задаётся по следующему правилу: первый член новой последовательности совпадает с первым членом исходной, второй член новой последовательности является последним членом исходной, третий – второй член исходной и так далее до исчерпания чисел. Иными словами, новая последовательность из [latex]2n[/latex] чисел на нечётных номерах имеет члены исходной последовательности (от первого и до [latex]n[/latex]-го включительно), чётным же номерам новой последовательности соответствуют члены исходной с номерами от [latex]n+1[/latex] до [latex]2n[/latex] включительно, записанные в обратном порядке.

А410е

Дана целочисленная матрица [latex][a_{ij}], ij=1,\ldots,n.[/latex] Получить [latex]b_{1},\ldots,b_{n}[/latex], где [latex]b_{i}[/latex] — это: [latex]\underset{1\leq j\leq n}{\max a_{ij}}\cdot \underset{1\leq j\leq n}{\min a_{ji}}[/latex].

Исходя из задачи ясно, что из данной матрицы надо взять максимальный элемент [latex]i[/latex]-й строки и умножить его на минимальный элемент [latex]i[/latex]-го столбца. Так например, если нам дана матрица 2-го порядка [latex]\begin{Vmatrix}1&2\\4&1\end{Vmatrix}[/latex] то [latex]b_{1}= 2[/latex], [latex]b_{2}= 4[/latex].

Для нахождения максимума  [latex]a_{ij}[/latex], введем переменную и будем придавать ей начальное значение 1-го элемента [latex]i[/latex]-й строки. Дабы при расчете максимума проходя по элементам строки мы не сравнивали каждый [latex]i[/latex]-й элемент с 1-м, придавать начальное значение максимуму мы будем в цикле по [latex]i[/latex]. Аналогично с минимумом [latex]a_{ji}[/latex], одно единственное но, начальное значение минимума будет равно первому элементу [latex]i[/latex]-го столбца.

 Тесты:

Матрица порядка [latex]n[/latex], где [latex]n[/latex]: [latex]a[i][j][/latex]: Результат: Комментарий:
2 [latex]\begin{Vmatrix}1&2\\4&1\end{Vmatrix}[/latex] 2 4 Пройден.
3 [latex]\begin{Vmatrix}1&2&3\\4&1&-6\\1&-2&-1\end{Vmatrix}[/latex] 3 -8 -6 Пройден.

 

Ссылка на код.

Ю4.15

Заданы массивы [latex]A(n)[/latex] и [latex]B(m)[/latex]. Получить массив [latex]C(m+n)[/latex], расположив в начале его элементы массива [latex]A[/latex], а затем элементы массива [latex]B[/latex].

Из выше написанного ясно что нам нужно сделать. Все пояснения максимально детально расписаны в самом коде.

Тесты:

n m A[n] B[m] Результат:
3 4 0 1 2 5 7 8 4 A={0 1 2}
B={5 7 8 4}
C={0 1 2 5 7 8 4}
2 9 9 3.6 7.4 3.6 4.6666 7.99702 1 1 1 1 1 A={9 3.6}
B={7.4 3.6 4.6666 7.99702 1 1 1 1 1}
C={9 3.6 7.4 3.6 4.6666 7.99702 1 1 1 1 1}

 

Ссылка на код.

А59и

Даны действительные числа [latex]x, y[/latex]. Определить, принадлежит ли точка с координатами [latex]x, y[/latex] заштрихованной части плоскости.

А59и

 

Вычислил уравнения прямых по формуле :

[latex]\frac{x-x_{a}}{x_{b}-x_{a}}=\frac{y-y_{a}}{y_{a}-y_{b}}[/latex]

Получил уравнения :

[latex]y=2x+3[/latex], [latex]y=-x[/latex], [latex]y=\frac{x-1}{3}[/latex]

Плоскость разделил на верхнюю и нижнюю части осью ox([latex]y\geq 0[/latex], [latex]y\leq 0[/latex]), при помощи первых двух уравнений выделил заштрихованную область в верхней части, при помощи первого и третьего соответственно в нижней(изменив знак «=» на «≥» или «≤»(в зависимости от того где должна лежать точка для выполнения условия) ).

Тесты:

[latex]x[/latex] [latex]y[/latex] Результат:
-2 -1 Точка входит в заштрихованную область.
-2 -1.001 Точка не входит в заштрихованную область.
-2 -0.999 Точка не входит в заштрихованную область.
-1 1 Точка входит в заштрихованную область.
-1.001 1 Точка не входит в заштрихованную область.
-1 1.001 Точка не входит в заштрихованную область.
-1 0.999 Точка входит в заштрихованную область.
1 0 Точка входит в заштрихованную область.
1 -0.001 Точка не входит в заштрихованную область.

Сам код:

Ссылка на код