MLoops22

Условие

Найдите закономерность и напишите программу, которая выводит аналогичную таблицу для любых чисел [latex]n > 0[/latex] (количество столбцов) и [latex]m > 0[/latex] (количество строк).

1491625364964811001211441
6919622525628932436140044
1484529576625676729784841
9009611024108911561225129

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

Входные данные Выходные данные
1 1 1 1
2 7 1 1491625
3 10 2 1491625364
9648110012
4 1 3 1
4
9
5 1 6 1
4
9
1
6
2
6 5 5 14916
25364
96481
10012
11441
7 25 4 1491625364964811001211441
6919622525628932436140044
1484529576625676729784841
9009611024108911561225129

Код

Решение

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

  • Квадраты записываются подряд без пробелов, начиная с первого столбца первой строки.
  • В каждой ячейке таблицы содержится ровно одна цифра. Таким образом, задаваемое количество столбцов можно рассматривать как требуемую длину строки.
  • Само построение таблицы представляет собой цикл, состоящий из вычисления квадрата очередного числа и его последующего вывода по одной цифре.
  • В процессе построения таблицы как минимум один раз длина текущей строки окажется равной заданному количеству столбцов. Тогда либо выполнится перевод на новую строку и продолжится вывод цифр (если количество полностью напечатанных строк будет меньше заданного), либо вывод остановится и таблица будет считается завершенной.

Опираясь на вышеперечисленное, опишем алгоритм работы цикла построения таблицы более подробно:

  1. В первую очередь проверяется условие продолжения цикла. Цикл будет выполняться до тех пор, пока количество полностью напечатанных строк (то есть строк, длина которых равна заданному количеству столбцов) будет меньше требуемого количества строк в готовой таблице.
  2. Определяется количество свободных столбцов в текущей строке. Если оно равно нулю, выполняется перевод на новую строку, количество полностью напечатанных строк увеличивается на [latex]1[/latex] и итерация цикла завершается.
  3. Определяется последовательность цифр, печатаемая в текущей итерации цикла. Если с прошлой итерации в результате переноса строки осталась «отрезанная» часть числа, то в этой итерации будет выводиться она; иначе же будет выводиться квадрат очередного натурального числа.
  4. Проверяется, сможет ли число, сформированное на предыдущем шаге, полностью уместиться в текущей строке. Если его длина меньше или равна количеству свободных столбцов, то оно выводится в поток и итерация цикла завершается; в противном случае выводится та его часть, которая может уместиться в строке, ненапечатанная часть сохраняется и будет выведена в следующей итерации (если выполнится условие продолжения цикла), количество полностью напечатанных строк увеличивается на [latex]1[/latex] и итерация цикла также завершается.

Чтобы реализовать такой алгоритм, нам, помимо указанных в условии целочисленных переменных n и m для обозначения требуемого количества столбцов и строк в таблице, также понадобятся следующие переменные и функции:

  • int i для хранения очередного натурального числа, квадрат которого нужно вычислить;
  • int toPrint для хранения числа, которое нужно будет выводить в очередной итерации цикла;
  • int columnsLeft для хранения числа свободных столбцов в текущей строке;
  • bool haveRest для обозначения наличия или отсутствия «отрезанной» в результате переноса строки части числа;
  • функция int GetLength(int a), возвращающая длину числа a;
  • функция int LeftPart(int a, int n), возвращающая левую часть числа a до n-той цифры включительно;
  • функция int RightPart(int a, int n), возвращающая правую часть числа a после n-той цифры.

До начала выполнения цикла присвоим переменной haveRest значение false («отрезанные» части чисел могут появится не раньше второй итерации), а переменной columnsLeft — считанное значение количества столбцов в таблице n.

Составим код цикла, следуя описанному выше алгоритму построения таблицы. Условием продолжения цикла будет наличие не напечатанных до конца строк m (в дальнейшем будем декрементировать m всякий раз при переносе строки):

Теперь выполняем проверку на наличие свободных столбцов в текущей строке. Если окажется, что в строке свободных столбцов не осталось, выполняем перенос на новую строку, после чего восстанавливаем число оставшихся столбцов (задаем переменной columnsLeft значение количества столбцов в таблице n) и указываем, что «отрезанная» часть отсутствует:

Если же свободные столбцы есть, определяем число, которое будет печататься в этой итерации. В случае, если «отрезанная» часть отсутствует, переменной toPrint присваиваем значение квадрата очередного натурального числа, иначе оставляем ее без изменений ( toPrint получает значение ненапечатанной части числа в конце цикла, если таковая имеется):

Наконец, оценим, может ли число, хранящееся в toPrint, уместиться в текущей строке. Если может, то выводим его, обновляем число свободных столбцов в строке и указываем, что «отрезанной» части числа нет:

В противном случае печатаем ту часть числа, которая помещается в строке, после чего присваиваем переменной toPrint значение ненапечатанной части, выполняем перенос строки, восстанавливаем количество свободных столбцов и указываем, что имеется «отрезанная» часть числа. Таким образом, в следующей итерации (если выполнится условие продолжения цикла) выводиться будет не очередной квадрат, а правая часть числа, которая не уместилась в предыдущей строке.

Ссылки

Код программы на Ideone.com;

Последовательность в OEIS;

Список задач на циклы.

Related Images:

MLoops2

Задача

Найти закономерность и написать программу, которая выводит аналогичную таблицу для любых чисел n > 0 (количество столбцов) и m > 0 (количество строк).

-*-*-*-*-*-*-*-*-*-*-*-*-
*-*-*-*-*-*-*-*-*-*-*-*-*
-*-*-*-*-*-*-*-*-*-*-*-*-
*-*-*-*-*-*-*-*-*-*-*-*-*
-*-*-*-*-*-*-*-*-*-*-*-*-
*-*-*-*-*-*-*-*-*-*-*-*-*
-*-*-*-*-*-*-*-*-*-*-*-*-
*-*-*-*-*-*-*-*-*-*-*-*-*

Решение

Для того, чтобы решить поставленную задачу, нужно сначала понять закономерность чередования символов — и * в таблице. Каждый символ имеет свой номер строки([latex]m[/latex]) и столбца([latex]n[/latex]), а чтобы определить их номера зададим счетчики [latex]i[/latex] и [latex]j[/latex]. Задача состоит из того, что нужно определить закономерность появления символа [latex]-[/latex], в остальных случаях нужно выводить символ [latex]*[/latex]. Символ [latex]-[/latex] чередуется с символом [latex]*[/latex],  и поэтому можно увидеть, что этот символ [latex]-[/latex] ставится на место, при котором сумма номеров столбцов и строк делится нацело на 2. Решить данную задачу можно с помощью тернарной операции.

Код

Тесты

Входные данные 10 10 8 5 25 8
Выходные данные -*-*-*-*-*
*-*-*-*-*-
-*-*-*-*-*
*-*-*-*-*-
-*-*-*-*-*
*-*-*-*-*-
-*-*-*-*-*
*-*-*-*-*-
-*-*-*-*-*
*-*-*-*-*-
-*-*-*-*
*-*-*-*-
-*-*-*-*
*-*-*-*-
-*-*-*-*
-*-*-*-*-*-*-*-*-*-*-*-*-
*-*-*-*-*-*-*-*-*-*-*-*-*
-*-*-*-*-*-*-*-*-*-*-*-*-
*-*-*-*-*-*-*-*-*-*-*-*-*
-*-*-*-*-*-*-*-*-*-*-*-*-
*-*-*-*-*-*-*-*-*-*-*-*-*
-*-*-*-*-*-*-*-*-*-*-*-*-
*-*-*-*-*-*-*-*-*-*-*-*-*

Задача взята отсюда.

Код программы на ideone.com.

Related Images:

Mloops 5

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

Найдите закономерность и напишите программу, которая выводит аналогичную таблицу для любых чисел [latex] n>0 [/latex] (количество столбцов) и [latex] m>0 [/latex] (количество строк): +++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*++ .

Задача находится здесь.

Тесты

n m Таблица
1 25 8 +++++*+++++*+++++*+++++*+
++++*+++++*+++++*+++++*++
+++*+++++*+++++*+++++*+++
++*+++++*+++++*+++++*++++
+*+++++*+++++*+++++*+++++
*+++++*+++++*+++++*+++++*
+++++*+++++*+++++*+++++*+
++++*+++++*+++++*+++++*++
2 6 6 +++++*
++++*+
+++*++
++*+++
+*++++
*+++++
3 2 5 ++
++
++
++
+*

Алгоритм решения

Таблица, которую необходимо вывести на экран представляет собой определённую последовательность. Каждый символ таблицы имеет номера столбца и строки (нумерация от 0 до n или m не включительно). Для этого задаём счётчики [latex] i [/latex] и [latex] j [/latex] .  Наша задача — определить закономерность появления символа [latex] \ast [/latex] в данной таблице, поскольку в иных случаях необходимо вывести символ [latex] + [/latex]. В первой строке «звёздочка» встречается в данной таблице в [latex] 6,12,18,24[/latex] столбцах. Во второй строке «звёздочка» находится в [latex] 5,11,17,23[/latex] столбцах. В последующих строках ситуация аналогичная. Можно заметить, что символ [latex] \ast [/latex] стоит на позициях, при которых сумма номера строки и номера столбца делится нацело на 6. Проверяем это условие с помощью тернарной операции:

от суммы номеров столбца и строки отнимаем число [latex] 5 [/latex], поскольку нам необходимо, чтобы первыми пятью символами последовательности были плюсы.

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

Ссылка на рабочий код программы находится здесь.

Related Images:

Интересная последовательность

Условие (OCPC-2015)

Дана последовательность из [latex]n[/latex] чисел: [latex]x_0[/latex], [latex]x_1[/latex], [latex]x_2, \ldots, x_{n-1}[/latex], где [latex]x_0[/latex] — кол-во чисел [latex]0[/latex] в данной последовательности, [latex]x_1[/latex] — кол-во чисел [latex]1[/latex], и так далее…

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

Число [latex]n[/latex] — количество членов последовательности.

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

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

Размышления над решением:

Обратим внимание, что сумма всех чисел данной последовательности является кол-вом используемых в ней чисел, что равно кол-ву членов последовательности. Иными словами, должно выполняться равенство:

[latex]x_0 + x_1 + [/latex]…[latex] + x_{n-1} = n[/latex] (1)

Далее заметим, что [latex]x_0[/latex] не может равняться нулю (ведь записав туда [latex]0[/latex], мы сразу же увеличиваем кол-во нулей до одного). Тогда [latex]x_0[/latex] равняется другому числу [latex]k[/latex], положим, большему чем 2. Тогда, [latex]x_k = 1[/latex].

Далее, положив [latex]x_1 = 2[/latex] и [latex]x_2 = 1[/latex], получаем последовательность, не нуждающуюся в дальнейших преобразованиях, в чем легко убедиться. Для наглядности:

Член последовательности [latex]x_0[/latex] [latex]x_1[/latex] [latex]x_2[/latex] [latex]x_k[/latex]
Чему равен k 2 1 0 1 0
Комментарий [latex]k[/latex] будет найдено ниже Количество чисел [latex]1[/latex] равно двум Количество чисел [latex]2[/latex] равно одному На этом промежутке только нули [latex]k[/latex] больше двух На этом промежутке только нули

Теперь вычислим [latex]k[/latex]. По формуле (1):

[latex]k + 2 + 1 + 1 = n[/latex];  [latex]k = n — 4[/latex]

(Примечание: При попытки подставить другие значения вместо  [latex]x_1[/latex] или  [latex]x_2[/latex] получится нестабильная последовательность, членам которой не получится присвоить значения согласно условию. Положив, например,  [latex]x_1 = 3[/latex], нам придется увеличить кол-во единиц, что приведет к необходимости использовать другие числа последовательности, что в итоге обязательно приведет к нарушению необходимого условия (1) — сумма уже присвоенных ненулевых чисел попросту превысит количество ее оставшихся членов. Аналогично, если присвоить [latex]x_2 = 2[/latex], и уж тем более, при внесении более «крупных» изменений в последовательность. Таким образом, найденное решение является единственным.)

Очевидно, минимальное «рабочее» значение  [latex]n[/latex] равно семи (при  [latex]k = 2 + 1 = 3[/latex]).

Тесты (1) :

 [latex]n[/latex]  [latex]x_0[/latex]  [latex]x_1[/latex]  [latex]x_2[/latex]  [latex]x_3[/latex]  [latex]x_4[/latex]  [latex]x_5[/latex]  [latex]x_6[/latex]  [latex]x_7[/latex]  [latex]x_8[/latex]  …
 7 3 2 1 1 0 0 0
8 4 2 1 0 1 0 0 0
9 5 2 1 0 0 1 0 0 0
[latex]n — 4[/latex] 2 1 0

Для [latex]n[/latex] меньше семи, решение (или их отсутствие) было найдено подбором.

Тесты (2) :

[latex]n[/latex] [latex]x_0[/latex] [latex]x_1[/latex] [latex]x_2[/latex] [latex]x_3[/latex] [latex]x_4[/latex] [latex]x_5[/latex]
1 Решений нет
2 Решений нет
3 Решений нет
4 1

2

2

0

1

2

0

0

5 2 1 2 0 0
6 Решений нет

Теперь, зная алгоритм, можно написать программу, выполняющую необходимые действия.

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

Также есть ссылка на рабочий код на Ideaone для желающих провести дополнительные тесты:

Ideaone.com

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:

А1042

Условие:

В данной последовательности действительных чисел [latex]a_{1},…,a_{20}[/latex] выбрать возрастающую подпоследовательность наибольшей длинны.

Тесты:

Число элементов в заданной последовательности Заданная последовательность Найденная подпоследовательность
20 1 44 3 66 2 6 55 2 4 9 50 3 4 12 45 8 15 5 18 48 3 6 9 12 15 18
20 1 9 17 25 90 91 92 13 18 23 28 100 75 50 45 44 43 42 41 40 1 9 17 25
20 155 100 80 83 86 89 -60 -40 -20 0 20 40 60 33 33 33 0 0 0 0 -60 -40 -20 0 20 40 60

Код:

План

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

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

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

Программа реализована с использованием шаблонных классов стандартной библиотеки vector и map. Vector используется для хранения всех используемых последовательностей, включая разности. Map используется, как временный объект для сортировки и слияния приращений, которые в ходе поиска встречаются с часто повторяющимися значениями.

Программа тестировалась с учётом случаев когда могут встречаться убывающие последовательности, которые должны игнорироваться.

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

Программа позволяет работать не только с фиксированными 20-ю числами. Длинна входной последовательности задаётся. Ввод содржит первым элементом длину последовательности, а затем следуют числа самой последовательности.

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

Related Images:

Ю3.35

Задача. [latex]\arctan(x)=x-\frac{x^{3}}{3}+\frac{x^{5}}{5}-\cdots (-1)^{n}\frac{x^{2n+1}}{2n+1}+\cdots[/latex]

Численно убедиться в справедливости равенства, для чего для заданного значения аргумента x вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью [latex]\varepsilon[/latex]. Испытать разложение на сходимость при разных значениях аргумента, оценить скорость сходимости, для чего вывести число итераций n (слагаемых или cомножителей), необходимых для достижения заданной точности.

Тесты:

x [latex]\varepsilon[/latex] left right n Разность Комментарий
1 0.3 0,785398 1 0 0,214602 Пройден
0.6 0.02 0.54042 0.528 1 0.0124195 Пройден
0.7 0.0002 0.610726 0.610631 7 9.52374е-05 Пройден
0.7 0.000002 0.610726 0.610728 12 1.67214е-06 Пройден
0.7 0.00000000001 0.610726 0.610726 28 8.34648е-12 Пройден

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

 

В начале мы подставляем аргумент x в левую часть равенства и подсчитываем ее. Затем проверяем разность между правой частью и левой, если ее модуль меньше заданного [latex]\varepsilon[/latex], то выводим результат, а если нет, то в цикле while мы считаем последовательность до тех пор пока их разность не будет меньше [latex]\varepsilon[/latex]. Последовательность задается в цикле рекурентно, поэтому т.к. первый член последовательности будет равен x, то заведем переменную s, равную xкоторая будет определять чему равен числитель дроби, домножая предыдущий на [latex](-1)x^{2}[/latex] . После этого программа выводит значение левой и правой части, их разницу и количество итераций для заданной погрешности.

Код можно проверить здесь.

Решение на Java:

Ссылка на решение.

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:

A405

Задача

Даны натуральное число [latex]n[/latex], действительная квадратная матрица порядка  [latex]n[/latex]. Построить последовательность [latex] b_1,..,b_n[/latex] из нулей и единиц, в которой [latex] b_i = 1[/latex] тогда и только тогда, когда в [latex]i[/latex] — строке  матрицы есть хотя бы один отрицательный элемент.

Тест

при  [latex]n = 3[/latex]

[latex]b_1[/latex] [latex]b_2[/latex] [latex]b_3[/latex] результат
0 0 0 0 1 0
0 -1 0
0 0 0

при [latex]n = 4[/latex]

[latex]b_1[/latex] [latex]b_2[/latex] [latex]b_3[/latex] [latex]b_4[/latex] результат
0 0 -1 0 1 1 0 1
0 -4 0 0
0 0 0 0
-8 0 0 0

при [latex]n=3[/latex]

[latex]b_1[/latex] [latex]b_2[/latex] [latex]b_3[/latex] результат
-0.75 0.98  4.67 1 0 1
4.89 0 3.75
-9.85 0 2.65

 

 

Ссылка на C++:http:http://ideone.com/KzTDgC

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

Решение:

Вводим квадратную матрицу [latex] z[n][n][/latex]  порядка  [latex]n[/latex].Далее в цикле описываем, что если :

то каждый элемент  [latex]b_i = 1[/latex], в противном случае  [latex]b_i = 0[/latex].Далее в input вводим количество элементов и соответствующие значения и получаем ответ.

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:

A412г

Задача:

Даны две целочисленные квадратные матрицы порядка 6. Найти последовательность из нулей и единиц  [latex]b_{1} , … , b_{6}[/latex] такую, что [latex]b_{i} = 1[/latex], когда:

г) количество отрицательных и неотрицательных элементов [latex] i [/latex]- строки первой матрицы совпадает соответственно с количеством отрицательных и неотрицательных элементов [latex] i[/latex]-строки второй матрицы.

 

  Матрица [latex]A[/latex]

    Матрица [latex]B[/latex]

     Ожидаемый      результат

 Комментарий

   1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
                  1 1 1 1 1 1          Тест пройден
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
                    0 0 0 0 0 0          Тест пройден
 0 2 2 3 4 4
1 3 3 4 5 5
2 4 4 5 6 6
3 5 5 6 7 7
4 6 6 7 8 8
5 7 7 8 9 9
0 2 2 3 4 4
-1 3 1 4 3 5
-2 4 0 5 2 6
-3 5 -1 6 1 7
-4 6 -2 7 0 8
-5 7 -3 8 -1 9
                    1 0 0 0 0 0          Тест пройден
0 2 2 3 4 4
1 3 3 -4 5 5
2 4 -4 5 6 6
3 -5 5 6 7 -7
4 6 -6 -7 8 8
5 -7 7 -8 9 -9
0 2 2 3 4 4
-1 3 1 4 3 5
-2 4 0 5 2 6
-3 5 -1 6 1 7
-4 6 -2 7 0 8
-5 7 -3 8 -1 9
                   1 1 1 1 1 1          Тест пройден

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

Код на Java

 

Описание:

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

 Алгоритм:

  1. Создаем функцию для ввода данных.
    1. Создаем первый цикл для перебора строк.
    2. Создаем вложенный цикл для перебора каждого элемента массива и функцию ввода данных.
  2. Создаем главную функцию.
    1. Создаем цикл, перебирающий строки массивов.
    2. Создаем два счетчика.
    3. Создаем первый вложенный цикл, для перебора каждого элемента второго массива.
      • В случае обнаружения отрицательных элементов, увеличиваем счетчик.
    4. Создаем первый вложенный цикл, для перебора каждого элемента второго массива.
      • В случае обнаружения отрицательных элементов, увеличиваем счетчик.
    5. Объявляем условие вывода данных. Так как условие находится внутри главного цикла, то будет выведено по одному значению, которое характеризует каждую строку.
  3. Создаем функцию для печати результата.
    1. Один цикл для перебора каждого элемента одномерного массива.
  4. В функции «int main ()»:
    1. Вводим значения элементов первого массива.
    2. Вводим значения элементов второго массива.
    3. Применяем главную функцию к данным массивам.
    4. Печатаем результат.
    5. Окончание работы программы.

Ссылка на Ideone.

 Функция пересчета отрицательных элементов в заданной строке заданного массива.

Рабочий образец.

 

 

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}\ldots a_{n}[/latex].

Вычислить: [latex]2\left(a_{1}+\ldots+a_{n} \right)^2[/latex]

Тесты:

n введенные результат
3 1 2 3 72
4 0 0 0 0 0
4 -5 -7 -3 -1 512
4 0.5 2.5 -0.7 2.6 48.02
3 -64 -128 63 2
Ссылка на код: http://ideone.com/Q0cUmW
Ссылка на код: ссылка

Ход решения:

Заводим переменную [latex]a[/latex],  счётчик [latex]sum[/latex] и количество чисел [latex]n[/latex]. Присваиваем счётчику [latex]sum [/latex] значение [latex]0 [/latex]  . Далее делаем цикл  до [latex]n[/latex] , а в нём прибавляем значение текущего  [latex]a[/latex] к счётчику [latex]sum[/latex]. При выводе возводим наш счётчик с конечной суммой всех элементов во вторую степень и умножаем на [latex]2[/latex].

Related Images:

А98

Задача. Пусть [latex]a_{1}=b_{1}=1; a_{k}=3b_{k-1}+2a_{k-1}; b_{k}=2a_{k-1}+b_{k-1}[/latex], [latex]k=\overline{2, \infty }[/latex]. Дано натуральное [latex]n[/latex]. Найти [latex]\sum_{i=1}^{n}\frac{2^{k}}{(1+a_{k}^{2}+b_{k}^{2})k!}[/latex].

Тесты:

n [latex]\sum_{i=1}^{n}\frac{2^{k}}{(1+a_{k}^{2}+b_{k}^{2})k!}[/latex] Комментарий
2

0.0596538

Пройден
4

0.0597339

Пройден
20 0.059734 Пройден

Код:

Для решения данной задачи понадобилось ввести переменную [latex]n[/latex], которая показывает какое количество раз нужно повторить операцию сложения. В цикле for вычисляется сумма, по заданной формуле. Далее последовательность можно задать рекурентно: чтобы каждый раз не считать [latex]\frac{2^{k}}{k!}[/latex], мы заводим переменную u, равную изначально двум, потому что k начинается с 2, и u каждый раз мы будем домножать на [latex]\frac{2}{k}[/latex]. Далее остается лишь посчитать a и b (переменная [latex]as[/latex] запоминает переменную [latex]a[/latex] для последующего вычисления переменной [latex]b[/latex]) и поставить в формулу. Для проверки выполнения программы можно воспользоваться ссылкой.

Решение на Java:

Ссылка на решение.

Related Images:

А136в

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

Тесты:

[latex]n[/latex] [latex]a_{1},…,a_{n}[/latex] Результат Комментарий
7 2 -1.1 4 -3.4 -6 1 2 19.5 Пройден
3 -6.73 2.01 5.99 14.73 Пройден
 

Вводим количество элементов ([latex]n[/latex]). После этого в цикле for считываем сами элементы [latex]a_{1},…,a_{n}[/latex] и вычисляем сумму их модулей. Для проверки выполнения программы можно воспользоваться ссылкой.

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] заранее известно). Получить:

a) [latex]a_{1}+a_{2}+ \cdots +a_{n}[/latex];

Элементы последовательности Сумма элементов до отрицательного числа.
3 4 6 -2 3 1 13
2 8 -1 2 3 4 5 10
1 0 5 0 0 -1 0 0 0 6
4.2 3.2 1 -5 1 5 8.4

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

Ниже представленная сама программа (C++).

Код на Java:

 

Так же вы можете воспользоваться ссылкой (C++)/ссылкой (Java), для ознакомления с программой.

Related Images:

А137д

Задача:

Даны натуральное число [latex]n[/latex], действительные числа [latex]a_1, … , a_n[/latex] . Вычислить:

[latex]-a_1, a_2, -a_3, … , (-1)^na_n[/latex]

Тесты:

[latex]n[/latex] [latex]a_1, … , a_n[/latex] [latex]-a_1, a_2, -a_3, … , (-1)^na_n[/latex] Комментарий
4 3 -2 -3 6 -3 -2 3 6 Пройден
5 40 -30 0 34.5  0.2 -40 -30 0 -34.5 0.2 Пройден
3 126 -486.95 -20.0985 -126 -486.95 20.0985 Пройден

Код:

Для начала вводим число  [latex]n[/latex]. Задаем цикл для ввода ряда чисел [latex]a_1, … , a_n[/latex]. Если [latex]n[/latex] — парное число, умножаем введенное [latex]a[/latex] на [latex]-1[/latex]. Выводим результат.

Ссылка Ideone

Код Java

Ссылка на Ideone

Related Images:

A119(a)

Задача:

Вычислить бесконечную сумму с заданной точностью [latex]\varepsilon \left(\varepsilon > 0\right)[/latex]. Считать что требуемая точность достигнута, если несколько первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем ε, это и все последующие слагаемые можно уже не учитывать.

  1. [latex]\sum{\frac{1}{i^2}} [/latex]
 
[latex]\varepsilon[/latex] Result Комментарий
0.0000000000000045 1.644912487 Тест пройден
0.45 1.25 Тест пройден
0 Попробуйте… Тест пройден
>1 1 Тест пройден
Описание:

В задаче сказано посчитать сумму членов определенной последовательности с заданной точностью.

Алгоритм:

  1. Объявление переменных, необходимых для обозначения члена последовательности, суммы членов последовательности и точности с которой будут проходить вычисления.
  2. Ввод значения точности.
  3. Проверка правильности ввода:
    • Отрицательное или равное нулю [latex]\varepsilon[/latex] вызовет бесконечный цикл и как следствие — превышение лимита по времени.
  4. Создание заведомо бесконечного цикла, который прерывается, как только член последовательности станет меньше, чем заданная точность.
  5. Вывод результата и окончание работы.

Ссылка на Ideone.

Related Images:

Ю 3.14

Задача

Проверить численно второй замечательный предел:[latex]\lim_{x\to\infty}\left(1+\frac{1}{n}\right)^n=e[/latex] , задавая n значения 1,2,3…При каком n исследуемое выражение отличается от менее, чем на заданную погрешность [latex]\varepsilon[/latex]?

Тесты

[latex]\varepsilon[/latex] n Полученное e e Разность Комментарий
1.1   1  2.0000000000 2.7182818284  0.7182818284 Пройден
 0.005  271 2.7132834531 2.7182818284 0.0049983753 Пройден
0.0000000314 32890950 2.7182817970 2.7182818284 0.0000000313 Пройден
 0 Погрешность равна 0, тогда e=2.7182818284, а n=бесконечность Не пройден

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

В данной задаче необходимо было сравнить заданную погрешность [latex]\varepsilon[/latex] с разностью между числом е и полученным значением при некотором n.

Для этого в цикле высчитывалось значение формулы [latex](1+\frac{1}{n})^{n}[/latex] при [latex]n\to \infty[/latex] и находилась разность [latex]dife=e-(1+\frac{1}{n})^{n}[/latex]. Если[latex]dife>\varepsilon[/latex] , то цикл заканчивался и программа запоминала последнее значение n и после этого выводила его на экран.

Код на Java

 

Related Images: