MS15. Зашифровка и расшифровка текста

Для решения задания MS15 необходимо, чтобы предыдущее уже было сделанным, однако на момент публикации оно таковым не является, потому данная запись содержит и его решение тоже.

Условие задачи MS14.
Зашифруйте текст из входного потока заменяя каждый символ по формуле [latex]c=at+b \mod 256[/latex], где [latex]t[/latex] — символ открытого текста, [latex]c[/latex] — символ зашифрованного текста, [latex]a[/latex], [latex]b[/latex] — произвольные ключи (параметры) шифрования.

Входные данные:
Два ключа через пробел и, через ещё один пробел, текст.

Выходные данные:
Зашифрованный текст.

Тесты.

Входные данные Выходные данные
[latex]a[/latex] [latex]b[/latex] Исходный текст Зашифрованный текст
1 f n Kittens P▲D*ж.ж.м(B,@.
2 4 j Hello, world! ◙☼ю¶z▬z▬ў▬z○ъ♠ц↑ў▬т↨z▬║¶▲•
3 ? . 0123456789 ■♂=♀|♀╗♀·♀9♪x♪╖♪ў♪5♫

Код на С++

Код на Java

Условие задачи MS15.
Найдите способ и напишите программу расшифровки текста зашифрованного в предыдущем задании по известным [latex]a[/latex] и [latex]b[/latex].

Входные данные:
Два ключа через пробел и, через ещё один пробел, зашифрованный текст.

Выходные данные:
Расшифрованный текст.

Тесты.

Входные данные Выходные данные
[latex]a[/latex] [latex]b[/latex] Зашифрованный текст Расшифрованный текст
1 f n P▲D*ж.ж.м(B,@. Kittens
2 4 j ◙☼ю¶z▬z▬ў▬z○ъ♠ц↑ў▬т↨z▬║¶▲• Hello, world!
3 ? . ■♂=♀|♀╗♀·♀9♪x♪╖♪ў♪5♫ 0123456789

Код на C++

Код на Java

Решение.
Основной трудностью при решении задачи является тот момент, что при шифровке символов строго по формуле, указанной в условии MS14, а именно [latex]c=at+b \mod 256[/latex], символы зашифрованного текста могут расшифровываться неоднозначно. К примеру, при [latex]a=8[/latex] и [latex]b=1[/latex] после зашифровки символов [latex]@[/latex] и [latex]`[/latex] в обоих случаях получим символ с кодом [latex]1[/latex]. Это часто лишает расшифрованный текст какого-либо смысла. Так происходит, поскольку в переменных типа [latex]unsigned[/latex] [latex]char[/latex] могут храниться элементы с кодом от [latex]0[/latex] до [latex]255[/latex], и при попытке присвоить переменной большее значение совершается своеобразный «круг». Так, если ей присвоить значение [latex]257[/latex], при выводе получим символ с кодом [latex]1[/latex]. Сначала в ходе работы обеих программ вводятся два ключа, а лишние пробелы читаются в одну из переменных для хранения символов. Программа для зашифровки принимает символ, зашифровывает его по указанной формуле, и выводит, а сразу за ним — элемент с кодом, который высчитывается по другой формуле: [latex]c=(at+b) / 256[/latex]. Этот код совпадает с числом совершённых «кругов». Программа для расшифровки же на каждом цикле принимает эти два символа, и выводит символ исходного текста, код которого вычисляется округлением до целых значения выражения [latex]\frac { c1-b+256\cdot c2 }{ a } [/latex], где [latex]c1[/latex] — первый символ, а [latex]c2[/latex] — второй.

Условия задач.
Код MS14 на ideone.com(C++)
Код MS15 на ideone.com(C++)
Код MS14 на ideone.com(Java)
Код MS15 на ideone.com(Java)

Related Images:

MS17. Самосинхронизирующийся скремблер

Задача

Рассматривая входной поток как последовательность бит, зашифруйте его при помощи восьмибитового самосинхронизирующегося скремблера. Начальное значение и обратные связи скремблера должны быть заданы в программе значениями двух переменных типа unsigned char. Как расшифровать полученный код.

Примечание: разобьём данную нам задачу на две подзадачи. В первой будет рассмотрено скремблирование входных данных, а во второй будет проведено дескремблирование исходных данных первой подзадачи.

Подзадача 1

Рассматривая входной поток как последовательность бит, зашифруйте его при помощи восьмибитового самосинхронизирующегося скремблера.

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

Некая символьная последовательность.

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

Зашифрованная символьная последовательность.

Тесты

Входные данные Выходные данные
Dogs eat meat. ea 27 33 77 25 11 66 75 5 3b e0 89 6b fa
Scramble it! fc 5a 80 ef 75 43 1e 92 9b 46 57 6
Base, base, it’s cheeseburger 1. Can you hear me? ec 49 a0 c9 72 75 43 13 55 66 28 80 e7 ed d2 75 b7 bf 69 93 c7 df 4e d0 be 3f b1 de 5c f6 ea 6c 94 f5 8d 1f 86 80 aa 74 5e c7 9e 17 2 47 41 76 7c d4 a1

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

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

Для зашифровки будем использовать стандартный алгоритм скремблирования. Скремблером будет переменная key, которая изначально равна [latex]5[/latex]. Выбирать из скремблера будем нулевой и четвёртый биты. Входные данные будут поступать в переменную input, после чего на них и на скремблере будет применяться функция scram.
Так как входные данные имеют формат unsigned char, считывание не прекратится никогда вплоть до принудительной остановки программы, ведь любые входные данные могут быть восприняты как символы. Для предотвращения этого, необходим символ, который будет служить «сигналом» для остановки программы. В нашем случае, это будет символ перехода на следующую строку.
Основная проблема задачи заключается в выводе зашифрованных данных, так как в результате скремблирования некоторые символы могут оказаться не отображаемыми. Дабы избежать подобной ситуации, зашифрованные данные будем выводить в шестнадцатеричном (для кода на Java — в десятичном) числовом формате.

Подзадача 2

Расшифровать входные данные из предыдущей подзадачи.

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

Некие зашифрованные данные, записанные в виде последовательности чисел шестнадцатеричного (для кода на Java — десятичного) формата.

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

Расшифрованные данные.

Тесты

Входные данные Выходные данные
ea 27 33 77 25 11 66 75 5 3b e0 89 6b fa Dogs eat meat.
fc 5a 80 ef 75 43 1e 92 9b 46 57 6 Scramble it!
ec 49 a0 c9 72 75 43 13 55 66 28 80 e7 ed d2 75 b7 bf 69 93 c7 df 4e d0 be 3f b1 de 5c f6 ea 6c 94 f5 8d 1f 86 80 aa 74 5e c7 9e 17 2 47 41 76 7c d4 a1 Base, base, it’s cheeseburger 1. Can you hear me?

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

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

Для расшифровки будем применять обратный алгоритм к использованному в предыдущей задаче. Значение необходимого для расшифровки дескремблера нам известно из предыдущей задачи (а именно — [latex]5[/latex]), поэтому его мы и используем.
Входные данные будут считываться методом cin (для C++), где параметр hex будет указывать на то, что данные поданы в шестнадцатеричном формате. После считывания на входных данных будет применяться алгоритм дескремблирования, и итоговые данные будут выведены на экран.

Ссылки

Related Images:

MS1. Количество чисел в потоке

Задание

Сосчитайте количество чисел во входном потоке.

Тесты

Вход Выход
20 16 11 3
17 22.4 41.9 74.5 4
122 347 1567 21 40 5
13 28 17 8 2 5
abc 123 5.5 21 go 4 4

Код на C++

Код на Java

 

Решение

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

Ссылки

1.Код на C++

2.Код на Java

Related Images:

e-olymp 5082. Степени вершин

Условие

Задача взята с сайта e-olymp.

Дан простой неориентированный невзвешенный граф. Требуется для каждой вершины подсчитать ее степень.

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

В первой строчке находится число [latex]1 \leq N \leq 1000[/latex] В следующих [latex]N[/latex] строчках находится матрица смежности.

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

Выведите [latex]N[/latex] чисел – степени всех вершин.

Тесты

Ввод Вывод
2
0 1
1 0
1 1
 3
0 1 0
1 0 1
0 1 0
 1 2 1
 3
0 1 0
1 0 1
0 1 0
1 4 1
 5
1 1 1 1 1
1 0 0 0 0
1 1 1 1 1
1 0 0 0 0
1 1 1 1 1
 6 1 6 1 6
 5
0 0 1 0 0
0 1 0 1 0
0 1 1 1 0
0 1 0 1 0
1 0 0 0 1
 1 3 4 3 3
 5
0 1 1 1 1
1 0 0 0 0
0 1 1 1 0
0 0 0 0 1
1 1 1 1 0
 4 1 4 1 4
 5
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0
 3 3 2 1 1

Алгоритм

Для решении задачи даже не нужно запоминать значения элементов матрицы. Выполняем данные действия [latex]N[/latex] раз, для каждой строки матрицы. Храним ответ в переменной counter, изначально [latex]0[/latex]. По очереди считываем все ее элементы и, если текущий элемент равен [latex]1[/latex], то прибавялем степени [latex]2[/latex], если элемент принадлежит главной диагонали (т.к. тогда это петля, а при подсчете степени ребро-петля учитывается дважды), иначе — [latex]1[/latex]. Затем выводим результат через пробел.

Код

Ссылки

Засчитанное решение на e-olymp.
Код для тестирования на Ideone.

Related Images:

A278

Задача A278

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

Даны натуральные числа [latex]n_{1},\dots,n_{m}[/latex], действительные числа [latex]x_{1},\dots,x_{m}[/latex]. Вычислить [latex]\frac{n_{1}\cdot x_{1}+\dots+n_{m}\cdot x_{m}}{n_{1}+\dots+n_{m}}[/latex].

 

Тестирование

Входные данные Выходные данные
1. 1 2 4 -1 -0.4
2. 1 2 3 4 5 0.6 1.88889
3. 5 -2 1 0.2 3 -3 2 0 -1.70909
4. 10 3.3 4 0.4 6 0.01 8 1 1 8 1.7469
5. 3 -0.5 2 -0.4 1 -0.3 5 32 11 5 20 -1 4.58095

Реализация (класс vector)

Алгоритм решения (класс vector)

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

  1. Вычисляем значение выражения [latex]n_1\cdot x_1+\dots+n_m\cdot x_m[/latex], накапливая сумму sum1.
  2. Вычисляем значение выражения [latex]n_1+\dots+n_m[/latex], накапливая сумму  sum2.
  3. Находим результат res от деления sum1 на  sum2.

Реализация (потоковая обработка)

Алгоритм решения (потоковая обработка)

Считываем все натуральные числа до конца входного потока и записываем их в переменную member1. Аналогично, считываем все действительные числа до конца входного потока и записываем их в переменную  member2.
Пока вводятся данные:

  1. Вычисляем значение выражения [latex]n_1\cdot x_1+\dots+n_m\cdot x_m[/latex], накапливая сумму sum1.
  2. Вычисляем значение выражения [latex]n_1+\dots+n_m[/latex], накапливая сумму  sum2.
  3. Находим результат res от деления sum1 на  sum2.

Для запроса на выполнение следует перейти по ссылке (класс vector).

Для запроса на выполнение следует перейти по ссылке (потоковая обработка).

Related Images:

A300

There is a sequence of real numbers [latex]a_1, a_2, \ldots[/latex](read to the end of the input stream). You need to get the sequence of numbers [latex]b_1, \ldots, b_{10}[/latex], where [latex]b_i[/latex] is the sum of those members of input sequence, that belong left-open interval [latex](i — 1, i](i = 1, \ldots, 10)[/latex]. If the interval doesn’t contain any members of the sequence, the corresponding [latex]b_i[/latex] will be set equal to zero.

Input

The sequence of real numbers  [latex]a_1, a_2, \ldots[/latex].

Output

Output the sequence [latex]b_1, \ldots, b_{10}[/latex], that satisfies specified conditions.

Tests

Input sequence Output sequence
1 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
2 1 1 1 1 1 1 1 7 0 0 0 0 0 0 0 0 0
3 2.1 2.5 2.7  0 0 7.3 0 0 0 0 0 0 0
4  11 12 13 14 15 0 0 0 0 0 0 0 0 0 0
5   2 12 85 0.6 0.6 2 0 0 0 0 0 0 0 0
6 2.02 42 1.998 3 7.43 3.33 3.03 5.56 5 5.5 0 1.998 5.02 6.36 5 11.06 0 7.43 0 0

Algorithm

The proposed task we can solve in two different ways: using class vector and like a problem with stream processing of data.

  1. Class vector:
    Initialize a vector, that will store all the elements of the input sequence (push them to the vector to the end of the input stream). Further, sort it ascending for easy follow-up work. For the each element of initial sequence check whether it belongs to the current interval. If it is true, it will be added to the corresponding element of resulting sequence, or zero will be added otherwise. Output the resulting sequence.
  2. Stream processing:
    While we are reading the input stream, we can determine which element of the resulting sequence it belongs, by using rounding to smallest integral value that is not less that our and substracting one (we need to remember that we can’t go beyond the bounds of the array, therefore we use a separate check). Perform the output of the result.

Code (class Vector)

Code (stream processing)

Related Images:

e-olymp 904. Увеличить на 2

Задача

Задан одномерный массив [latex]A[/latex] целых чисел. Увеличить на [latex]2[/latex]
каждый неотрицательный элемент массива.

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

В первой строке задано натуральное число [latex]h[/latex] — количество элементов массива [latex]h <= 100.[/latex] Во второй строке через пробел заданы сами элементы массива, значение каждого из которых по модулю не превышает [latex]100.[/latex]

Выходные данные
В единственной строке вывести через пробел[latex]h[/latex] чисел: новые значения элементов массива, в том же порядке, в котором они были заданы.

Код

Тесты

Входные данные Выходные данные
4
1 2 3 4
3 4 5 6
4
1 2 3 -4
3 4 5 -4
4
-1 2 3 4
-1 4 5 6
4
0 2 3 4
2 4 5 6
4
1 2 2 4
3 4 4 6

Решение

Вводим число [latex]n[/latex]. Используем цикл for и вводим число [latex]a[/latex]. Выводим неотрицательное число a, либо без изменений, либо увеличенное на два.

Код

ideone.com

Задача

e-olymp.com

Related Images:

e-olimp 7365. Молоко и пирожок

Ученикам первого класса дополнительно дают стакан молока и пирожок, если вес первоклассника менее 30 кг. В первых классах школы учится [latex]n[/latex] учеников. Стакан молока имеет емкость 200 мл, а упаковки молока – 0.9 л. Определить количество дополнительных пакетов молока и пирожков, необходимых каждый день.

Тесты

Количество детей Вес Количество упаковок молока Количество пирожков
3 30 29 30 1 1
5 25 41 56 20 20 1 3
4 30 30 30 30 0 0
7 25 26 27 28 29 23 24 2 7

Код

Решение

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

По количеству пирожков мы можем найти количество упаковок молока. При этом мы можем получить не целое число. Чтобы избежать этого, подключаем библиотеку <cmath>  и  используем округление вверх ceil .

Посмотреть код на ideone  можна здесь.

Проверить правильность на e-olimp можна здесь.

Related Images:

А136и

Задача. Даны натуральное число n, действительные числа [latex]a_{1}, a_{2}, \dots, a_{n}[/latex] Вычислить [latex] \frac{a_{1}}{0!} + \frac{a_{2}}{1!} + \cdots + \frac{a_{n}}{(n-1)!} [/latex]

Тест

Число-n Действительные числа Результат
5 4 5 6 7 8 13,5
7 5 4 7 9 2 8 3 14,1542
3 6 9 3 16,5

Программа:

  1. Вводим n, a (действительные числа);
  2. Вычисляем минор;
  3. Задаем массив;
  4. Делим на факториал и суммируем;
    Ссылка на программу

Related Images:

e-olimp 5074. Степени вершин по спискам ребер

Задача:

Неориентированный граф задан списком ребер.

Найдите степени всех вершин графа.

Технические условия:

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

Входной файл содержит числа [latex]n[/latex]  [latex] (1 \leq n \leq 100) [/latex] — число вершин в графе и

[latex]m[/latex]  [latex](1 \leq m \leq \frac{n(n-1)}{2})[/latex] — число ребер. Затем следует [latex]m[/latex] пар чисел — ребра графа.

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

Выведите в выходной файл [latex]n[/latex] чисел — степени вершин графа.

Результат на C++

Результат на Java

Код на C++:

Код на Java:

 

Описание:

Мне дан неориентированный граф, значит каждое упоминание вершины в списке ребер увеличивает её степень на единицу. Заводим массив (размер массива равен числу вершин) и при каждом упоминании вершины увеличиваем её ячейку в массиве на единицу. Выводим результат.

Related Images:

А155

Задача.

Даны натуральное число $n$, действительные числа $x_1, \ldots, x_n, $ где [latex](n\geq 2).[/latex] Вычислить:

[latex]\left( \left( \frac{1}{|x_{1}|+1}+x_{2} \right)\left(\frac{1}{|x_{2}|+1}+x_{3} \right)\cdots\left(\frac{1}{|x_{n-1}|+1}+x_{n} \right)\right)[/latex]

Тесты.

Ввод Вывод
$n$ $x_1, \ldots, x_n$ $k$
2 1 1 1.5
3 0.5 1 2 4.16667
3 -0.3 1 -0.5 0

 

Решение.
Задаем переменные $n, k$и массив действительных чисел с количеством элементов $n$. В первом цикле вводим числа в массив. Во втором умножаем переменную $k$ каждый раз на [latex]\left(\left(\frac{1}{|x_{n-1}|+1}+x_{n} \right)\right)[/latex]. После выводим значение $k$.

Related Images:

А137г

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

Решение. Вводим переменную [latex]n[/latex], переменную [latex]a[/latex](куда будем считывать наши числа), а так же [latex]f[/latex]-произведение введенных чисел. Каждый раз в цикле уже введенные числа умножаются на следующее число взятое с противоположным знаком, а изначально «f»  равна «[latex]-1[/latex]» так как «Очередное произведение отличается от предыдущего сомножителем [latex](-a_{i})[/latex]».

Тесты:
[latex]n=3[/latex]

Числа[latex](a_{n})[/latex] Результат:
1 1, -2, 6.
2
3

[latex]n=7[/latex]

Числа[latex](a_{n})[/latex] Результат:
1.8 1.8, -7.02, 0.000702, 0.055458, -25.3432, 22.8114, -91.2456.
3.9
0.0001
-79
456.98
0.9001
4

 

 

 

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

Related Images:

А137е

Даны натуральные [latex] n[/latex], действительные [latex] a_{1},\ldots,a_{n}[/latex].

Вывести: [latex] a_1+1!, a_2 +2!, …, a_n+n![/latex].

n a1 a2 a3 a4
Input: 4  1 2 3 4 Output: 2.00 4.00 9.00 28.00
Input: 4 0.1 0.2 0.3 0.4 Output: 1.10 2.20 6.30 24.40

Описываем переменную факториала и переменную из потока типа [latex]double[/latex]. Запускаем цикл [latex]for[/latex], от [latex]1[/latex] до [latex]n[/latex]. Дальше в теле цикла описываем чтение элементов, увеличение факториала и вывод суммы цифр из потока и факториала.

Ссылка на программу.

Related Images:

А136е

Задача:

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

Тест:

n [latex]a_{1}, a_{2}, \cdots, a_{n}[/latex] s p Комментарий
2 3 4 7 12 Пройден
4 1 3 5 7 16 105 Пройден
6 2 2 3 3 4 4 18 576 Пройден
1 9 9 9 Пройден
Решение:

В программе задаем число [latex]n[/latex]- количество элементов сумм и произведения и [latex]a[/latex]- элементы сумм и произведения.  [latex]n[/latex] и [latex]a[/latex] вводим с клавиатуры. В цикле находим сумму и произведение.

Посмотреть работу можно тут.

Related Images:

А136м

Задача.

Даны натуральное число [latex]n[/latex], действительные числа   [latex]a_{1},…,a_{n}[/latex] .

Вычислить: [latex]\sin \left|a_{1}+…+a_{n} \right|[/latex]

Тест

[latex]n[/latex] последовательность результат (wolframalpha)
1 0 0
1 1000 0.82688
1  -100 0.505366
3 -100 1000 -100 0.89397
5 1 2 3 4 5 0.650287

Я показала , что период не [latex]\pi [/latex] , а [latex]2\pi [/latex] . Период  [latex]\pi [/latex]  был бы в случае [latex]\left|\sin a_{1}+…+a_{n} \right|[/latex] , а у нас  [latex]\sin \left|a_{1}+…+a_{n} \right|[/latex] . Вот графики :

6WSmLvYnzY4

zATL68loKls

 

Ссылка на программу: http://ideone.com/ICxfXU

Решение:

Переменной [latex]sum[/latex] присваиваем значение [latex]0[/latex]. Вводим элемент [latex]a[/latex], который мы будем суммировать в цикле до [latex]n[/latex]:

Далее вводим в input соответствующие значения [latex]a[/latex] и получаем ответ.

 

Related Images:

А136з

Задача Вычислить: [latex]-\frac{a_1}{1!}+\frac{a_2}{2!}-…+\frac{(-1)^na_n}{n!}[/latex]

Тест

n последовательность sum(wolframalpha)
2 0 0 0
2 5 8 -1
3 5 8 12 -3
4 1 2 3 24  1
 5  0 0 0 2 3  0, 058333
Ссылка на программу:http://ideone.com/F0UyqY

Решение:
В этой задаче главное правильно расставить знаки, так  как  это повлияет на результат.Поэтому мы заводим переменную [latex]sign[/latex], которая будет следить за знаком. Далее проверяем  чётность, если элемент делиться на 2 без остатка, то он получает знак [latex]+[/latex], в противном случае [latex]-[/latex]:

Описываем факториал:

Выполняем суммирование и делим на факториал:

Вводим в [latex]input[/latex] количество элементов ([latex]n[/latex])  и сами элементы.Получаем ответ.

Related Images:

A159

Задача:

Даны натуральное число n, действительные числа [latex]a_{1}, …, a_{n}[/latex] [latex]\left( n\geq 3\right)[/latex] .

Получить [latex]b_{1}, …, b_{n-2}[/latex], где [latex]b_{i} = a_{i + 1} + a_{i + 2}[/latex], [latex]i=1, 2 , … , n-2[/latex].

Таблица:

[latex]a_{1}, …, a_{n}[/latex] [latex]b_{1}, …, b_{n-2}[/latex] Комментарий
1 2 3 4 5 6 7 5 7 9 11 13 Пройден
1.235 2.457 2.543 4.457  4.543 6.457 6.543 5 7 9 11 13 Пройден
 9 -12 17 -10 19 -8 21 5 7 9 11 13 Пройден
-21 26 -21 28 -19 30 -17 22 -15 24 -13 26 5 7 9 11 13 5 7 9 11 13 Пройден
21 -26 21 -28 19 -30 17 -22 15 -24 13 -26 -5 -7 -9 -11 -13 -5 -7 -9 -11 -13 Пройден

Исходный код:

Работать будет и такая версия:

Код на Java

 

 Описание:

Для выполнения условия задачи необходимо пропустить первый элемент первой последовательности и начать суммирование второго и третьего элементов (далее третьего и четвертого, четвертого и пятого и т. д.). Для этого я ввел переменную, в которой будет храниться первый элемент вводимой последовательности (более он использоваться не будет). Далее создаем цикл, в котором будем одновременно вводить значения элементов первой последовательности и выводить элементы результирующей последовательности.

Алгоритм:

  1. Объявление необходимых переменных.
  2. Отдельно ввод первого и второго элемента первой последовательности.
  3. Создание цикла для ввода данных.
    1. Печать суммы второго и третьего элемента первой последовательности (первый элемент результирующей последовательности).
    2. Обеспечение сдвига суммируемых элементов (со второго и третьего на третий и четвертый и т. д.)
  4. Окончание работы программы после завершения цикла.

Ссылка на Ideone.

 

 

 

 

 

Related Images:

А165г

Даны действительные числа[latex] a_1,a_2,\ldots[/latex] Известно, что [latex] a_1 > 0 [/latex] и что среди [latex]a_2,a_3,\ldots[/latex]  есть хотя бы одно отрицательное число. Пусть [latex]a_1,\ldots,a_n[/latex]  – члены данной последовательности, предшествующие первому отрицательному члену ([latex]n[/latex] заранее неизвестно). Получить:
г) среднее геометрическое  [latex]a_1,\ldots,a_n[/latex]

Последовательность Среднее геометрическое
2 2 2 -3 4 2
3 6 8 -9 4 5 5.24148
3 4 5 6 -2 4.35588
15 12 13 -1 2 13.2761
2 -1 2

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

Считывать числа с потока ввода. Умножаем числа пока не встретится отрицательное.После чего извлекаем корень используя данные счетчика.

Код программы можно посмотреть тут

Related Images:

А136д

Задача: Даны натуральное число [latex]n[/latex], действительные числа [latex] a_{1},\ldots,a_{n} [/latex].

Вычислить:

[latex] a^{2}{1}+\ldots+a^{2}{n} [/latex];

Тесты:

n a result
0 1, 2 error: out of range
2 5, 8  89
3 6, 13, 4  221
4 1, 2  error: incomplete input
7 2, 4, 8, 16, 32, 64, 128 21844

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

Код прогрммы на языке Java:

Ссылка: https://ideone.com/x0q7r4

План программы:

  1. Назначение рабочих переменных
  2. Ввод количества элементов суммы
  3. Проверка ввода n
  4. Ввод чисел » а «
  5. Цикл вычисления
  6. Вывод результата

Программе задаётся число n элементов суммы и сами элементы. При получении этих данных программа вычисляет сумму. Если количество элементов меньше или равно 0 , программа сообщает о невозможности выполнения операции по суммированию. Входные данные используются по мере ввода, они нигде не сохраняются, т.к. используются единожды для накопления общего результата.

Ссылка на ideone.com: http://ideone.com/dxXr0Q

Related Images:

А136ж

Задача: Даны натуральное число [latex]n[/latex], действительные числа  [latex]{ a }_{ 1 },\dots ,{ a }_{ n }[/latex]

Вычислить:  [latex]{ a }_{ 1 }-{ a }_{ 2 }+{ a }_{ 3 }-\dots +{ (-1) }^{ n+1 }{ a }_{n }[/latex]

(В этой задаче не требуется хранение исходных последовательностей значений)

n  [latex]{ a }_{ 1 },\dots ,{ a }_{ n }[/latex] Sum
5 7 4 3 3 3 6
10  1 1 2 2 3 3 4 4 5 6 -1
15 66 456 3334 23 0.86 -587 4332 82223 0.0008 0 -0.75 44 52 7777 43 -82108.9
5  0.0005 0.0006 0.06 0.00008 0.00003 0.05985

Код программы на С++

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

Смысл решения прост — мы считываем количество чисел, которые нам в последствии предоставят. делается это для того, чтобы наш цикл мог точно закончится. Затем считывая каждое число присваиваем ему соответствующий знак и суммируем. Как и просили в условии — исходные значения не сохраняются.

Ссылка C++

Ссылка Java

 

Related Images: