А137в

Задача.

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

Тесты.

n [latex]a_{1}…a_{n}[/latex] [latex]\left|a_{1} \right|, \left|a_{1}+a_{2} \right|, … , \left|a_{1}+…+a_{n} \right|[/latex] Комментарий
5 -5  6  11  -10 5  1  12  2 Пройден
4 -4.2  5.6  0  -3.2 4.2  1.4  1.4  1.8 Пройден

Код.

C++

Java

Вводим числа, каждое число прибавляем к общей сумме и выводим модуль данной суммы.

Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой(C++) или другой(Java).

Related Images:

А156 б

Задача

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

[latex] (x_{1}+x_{2}+x_{3})x_{2}+(x_{2}+x_{3}+x_{4})x_{3}+\ldots+(x_{n-2}+x_{n-1}+x_{n})x_{n-1}[/latex]

Код C++

 

 Код C++ на Ideone: http://ideone.com/l7qlqZ

Код Java

Код Java на Ideone: A156б

Комментарии

Вводим первые [latex]x_1, x_2, x_3[/latex] , вычисляем  сумму  [latex]\sum_{i= 3}^{n}\left ( x_{n-2}+x_{n-1}+x_{n} \right )x_{n-1}[/latex], каждый раз заменяя [latex]x_1[/latex] на [latex]x_2[/latex] и [latex]x_2[/latex] на [latex]x_3[/latex], а [latex]x_3[/latex] считывая из стандартного потока .

Тесты

Размер массива (n) Массив (x[n]) Результат Комментарии
3 1 2 3 12 Пройден
4 1.1  2.3  4.5  6.7 78.92 Пройден
5 0 0 2 -4 7 -24 Пройден

Related Images:

e-olimp 2392. Интересная сумма

Ссылка на задачу.

Дано трёхзначное натуральное число [latex]N[/latex]. Определить сумму наибольшего и наименьшего трёхзначных чисел, которые могут быть образованы из числа [latex]N[/latex] перестановкой цифр.

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

Натуральное число [latex]N[/latex] [latex]\left(100\leq N\leq 999 \right)[/latex].

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

Ответ к задаче.

Пройденные тесты (C++).

Java.

Код программы (C++):

Java:

Когда я увидела эту задачу, то мне в голову сразу пришло решение с применением массивов. Изначально пользователю предлагается ввести трёхзначное число, которое я впоследствии раскладываю на отдельные элементы массивов, один из которых определяет минимальное трёхзначное число, а второй, в свою очередь,  — максимальное.

Затем я сортирую первый массив по возрастанию, а второй по убыванию.

Далее проблема возникает именно с первым массивом, так как его первым элементом может оказаться 0, что нам не подходит, так как наше минимальное число, образованное перестановкой, обязано быть трёхзначным по условию. Для этого я делаю 2 несложных проверки, в результате которых первый элемент массива меняется местами либо со вторым, либо с третьим.

После чего я перевожу элементы массива в одно трёхзначное число и наконец-то получаю сумму.

Сложность задачи 66%.

Related Images:

А116в

Задача.

Даны натуральное число [latex]n[/latex], действительное число [latex]x[/latex]. Вычислить: [latex]\sum_{i=1}^{n}{\frac{x+cos(ix)}{2^{i}}}[/latex]

Тесты. 

n x sum Комментарий
5 2 1.65 Пройден
10 10 9.67 Пройден
5 0 0.97 Пройден

Все тесты проверены на wolframalpha.

Код.

C++

Java

 

Для решения данной задачи воспользуемся циклом for, также для упрощения вычислений (не считать [latex]2^{i}[/latex] каждый раз заново) введем переменную degree.

Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой(C++) или другой(Java).

Related Images:

A106

Даны действительные числа [latex]a, b[/latex], натуральное число  [latex]n(b>a) [/latex]. Получить [latex](f_1+…+f_n)h[/latex], где

[latex]h=\frac{b-a}{n}[/latex],      [latex]f_i=\frac{a+(i-\frac{1}{2})h}{1+(a+(i-\frac{1}{2})h)^{2}}[/latex]
a b n h f Комментарий
5 7 0 Введенное ‘n’ не натуральное
17 10 15 Первое введенное число больше второго
47.421 57.421 5 2 1.912507e-01 Пройден
3 12 6 1.5

1.330323e+00

Пройден
1 5 1 4 1.2 Пройден
2 14 2 6 1.694830e+00 Пройден

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

Код на Java:

 

Дано [latex]a,b,n[/latex]. Если [latex]n<1[/latex] или [latex]a=b[/latex], то выведем ошибку. Если [latex]a>b[/latex], то выведем ошибку.
По формуле вычислим [latex]h=\frac{b-a}{n}[/latex]  и с помощью цикла по формуле [latex]f_i=\frac{a+(i-\frac{1}{2})h)}{1+(a+(i-\frac{1}{2})h)^{2})}[/latex] вычислим сумму. Домножим сумму на [latex]h[/latex].

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

Related Images:

Ю 4.24

                                                    «Нарастающий итог»

Задача:

В массиве А[n] каждый элемент, кроме первого, заменить суммой всех предыдущих элементов.

 
Вводимые данные Предполагаемый вывод Комментарий
1 1 1 1 1 1 1 1 2 3 4 5 Тест пройден
1 2 3 4 5 6 7 8 9 1 1 3 6 10 15 21 28 36 Тест пройден
3 5 2 9 0 4 65 156 1 3 3 8 10 19 19 23 88 244 Тест пройден
2 -7 3 8 -4 5 -2 4 2 2 2 -5 -2 6 2 7 5 9 Тест пройден

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

 Описание:

Постейшие операции с массивом. С помощью цикла записываем данные в массив, после чего, снова с помощью цикла, записываем новые данные во второй массив. Далее выводим результат.

Алгоритм:

  1. Объявление переменной и ввод размерности массива.
  2. Создание массива.
  3. Создание цикла, для записи вводимых данных в массив.
  4. Создание нового  массива.
  5. Создание цикла, для ввода обработанных данных в новый массив.
  6. Создание цикла, для вывода результата.
  7. Окончания работы программы.

Ссылка на 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.39

Задача: Численно убедиться в справедливости равенства [latex]\frac{1}{4}\ln{\frac{1+x}{1-x}}+\frac{1}{2}\arctan{x}=\quad x+\frac{{x}^{5}}{5}+\dots+\frac{{x}^{4n+1}}{4n+1}+\dots[/latex], для чего для заданного значения аргумента [latex]x[/latex] вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью [latex]e[/latex]. Испытать разложение на сходимость при разных значениях аргумента, оценить скорость сходимости, для чего вывести число итераций [latex]n[/latex] слагаемых, необходимых, для достижения заданной точности. Интервал для этой задачи: [latex]-1<x<1[/latex].

Ввод Вывод
[latex]x[/latex] Погрешность Output Комментарий
-0.99 1e-4 148 Пройден
0.99 1e-4 148 Пройден
0.99 1e-14 685 Пройден
0.7 1e-10 14 Пройден
-0.3 1e-13 6 Пройден
0.001 1e-13 1 Пройден
Идея решения: Используем цикл for, в условие которого ставим проверку на превышение погрешности суммы. Левую часть выражения вычисляем и записываем в переменную [latex]curr[/latex]. Сумму (то что стоит в правой части выражения) объявим как [latex]sum[/latex], и инициализируем значением [latex]x[/latex] (Это делается для того, чтобы во время работы цикла не вычислялось одно лишнее слагаемое).

Каждую итерацию цикла инкрементируем счетчик [latex]count[/latex]. Переменную [latex]y[/latex], которая соответствует i-тому слагаемому суммы, увеличивают до значения следующего слагаемого и прибавляют к сумме. Далее проверяем разность частичной суммы и заданного значения [latex]curr[/latex]. Если эта разность будет удовлетворять нашей точности, то число [latex]count[/latex] и будет количеством слагаемых в правой части.

Замечание: После цикла значение [latex]count[/latex] вновь инкрементируется, это сделано по следующей причине: сумма изначально содержала в себе первое слагаемое. Если сумма бы изначально содержала в себе 0, то нам пришлось бы вычислять лишнее слагаемое.

Ideone

Related Images:

A114ж

Задача:

Вычислить [latex]\prod _{ i=2 }^{ 100 }{ \frac { i+1 }{ i+2 } } ;[/latex]

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

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

Произведение элементов задаем через цикл, в каждом вычисляя соответствующий множитель.

Результат  = 0.0294118. ( Это и есть 1/34).

(«Математический хак» о котором написал Игорь Евгеньевич, есть сокращение этих сомножителей, а именно:

[latex] \frac { 3 }{ 4 } \cdot \frac { 4 }{ 5 } \cdot \frac { 5 }{ 6 } \cdot \cdot \cdot \cdot \frac { 101 }{ 102 } =\frac { 3 }{ 102 } =\frac { 1 }{ 34 } =0.02941176; [/latex]

 

Related Images:

Ю3.46

Задача: Для заданных значений [latex]n [/latex] и [latex]x [/latex] вычислить выражение [latex]s = \sin x+\sin \sin x+ \cdots +\sin \sin \cdots \sin x [/latex].

n x s
10 5.01 -6.40802
8 1.67 5.54661
20 2*PI 0

Решение:

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

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

 

Суммируем в цикле [latex] \sin x [/latex] и присваиваем  [latex]x = \sin x[/latex]

Related Images:

А116 (б)

Даны натуральное число [latex]n[/latex], действительное число [latex]x[/latex]. Вычислить: [latex]\sum_{i=1}^{n}{(\frac{1}{i!}+\sqrt{|x|})}[/latex];

n x Ответ
2 -4 5.5
3 4 7.6666
1 4 3
Для решения этой задачи воспользуемся циклом for.  Для начала запишем квадрат модуля числа x. Далее создадим цикл для решения этой задачи. Вычислим сначала сумму факториалов, а вне цикла добавим к ней квадрат модуля x, умноженный на n.

Related Images:

А114в

Задача: Вычислить [latex]\sum_{i=1}^{10}{\frac{1}{i!}}[/latex].

Ответ
1.718282

C++:

Java:

Для переменных [latex]a, b[/latex] я использовала тип double, так как они они используются для вычислений и являются вещественными числами. Для переменной [latex]i[/latex] — тип int, так как [latex]i[/latex] — это целые числа от 1 до 10.

Чтобы решить задачу, воспользуемся циклом for, который работает при [latex]1\leq i\leq 10[/latex] и каждый раз прибавляет к [latex]i[/latex] единицу. Переменную [latex]i[/latex] я объявила в цикле, так как вне цикла она не нужна.

Сначала найдём [latex]a[/latex] — элемент суммы, который зависит от выбранного [latex]i[/latex]. После сложим [latex]a[/latex] и переменную [latex]b[/latex], которая обозначает сумму предыдущих элементов, a результат запишем снова в переменную [latex]b[/latex].

Когда цикл дойдёт до 11, его условие перестанет выполняться и напечатается последнее значение, присвоенное переменной [latex]d[/latex].

Эта задача на Ideone:
C++
Java

Related Images:

А 42

Задача

Даны действительные числа [latex]x,y[/latex]  [latex](x\neq y)[/latex]. Меньшее из этих двух чисел заменить их полусуммой, а большее — их удвоенным произведением.

Тесты

Было дано Стало после проверки Комментарий
x y x y
38.76 -24.33 -1886.0615999  7.215 Пройден
11.346 23.228 17.287 527.0898 Пройден
-2444.2 1231.444 -606.378 -6019790.8496 Пройден
767.2 -1455.24 -2232920.256 -344.02 Пройден
0 213.4 106.7 0 Пройден
1111 0 0 555.5 Пройден
123.4 123.4 Ничего не выйдет, х=у Не пройден
0 0 Ничего не выйдет, х=у Не пройден

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

 

Для получения ответа переменной необходимо преодолеть критерий [latex](x\neq y)[/latex].

Если же [latex](x\neq y)[/latex], то программа сравнивает сами переменные. Тут может быть два случая:

  • Если  [latex]x>y[/latex], то начальные значения переменных мы должны изменить на [latex]x=\frac{x+y}{2}[/latex], a [latex]y=2*x*y[/latex].
  • Если [latex]y>x[/latex], то начальные значения переменных мы должны изменить на [latex]y=\frac{x+y}{2}[/latex], a [latex]x=2*x*y[/latex].

Программа вначале высчитывает конечные х и у по формулам и при выполнении условий просто присваивает переменным значения. Тем самым мы упрощаем программу (т.к. расчет значений идет только один раз вместо двух).

Второй вариант решения.

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

Для начала описываем функцию swap, которая меняет значения х и у местами. Далее, в самой программе, проверяем не равны ли х и у и, если не равны, то какое из них больше. Узнав большее, используем функцию swap.

Код на Java

Related Images:

А1

Задача. Даны два действительных числа [latex]a[/latex] и [latex]b[/latex]. Получить их сумму, разность и произведение.

[latex]a[/latex] [latex]b[/latex] [latex]a+b[/latex] [latex]a — b[/latex] [latex]ab[/latex] Комментарий
 0  0  0 0.0 0.0 Пройден
 1 2  3.0 -1.0  2.0 Пройден
 100.3 1000.0001  1100.3001  -899.7001  100300.01003 Не пройден из-за ошибки округления
 1.2e2  -2.2e2  -100  340  -26400 Пройден
 1.2e22  -2.2e22  -1e22 3.4e22  2.64e44 Пройден
1e308 1e308 1e308 0 1e616 Не пройден — превышено макс.значение

Диапазон тестов нужно подобрать так, чтобы произведение не выходило за допустимые значение для данного типа. Иначе получаем inf — бесконечность.
Если разница в порядках чисел велика (например, 1e38 и 1e-38), то при сложении и вычитании меньшее по абсолютной величине игнорируется.

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

В программе использован тип данных с плавающей точкой и двойной точностью.
Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой.

Related Images: