e-olymp 1872. Снеговики

Ссылка на оригинальную статью.

Задача:

Зима. 2012 год. На фоне грядущего Апокалипсиса и конца света незамеченной прошла новость об очередном прорыве в областях клонирования и снеговиков: клонирования снеговиков. Вы конечно знаете, но мы вам напомним, что снеговик состоит из нуля или более вертикально поставленных друг на друга шаров, а клонирование — это процесс создания идентичной копии (клона).

В местечке Местячково учитель Андрей Сергеевич Учитель купил через интернет-магазин «Интернет-магазин аппаратов клонирования» аппарат для клонирования снеговиков. Теперь дети могут играть и даже играют во дворе в следующую игру. Время от времени один из них выбирает понравившегося снеговика, клонирует его и:

  • либо добавляет ему сверху один шар;
  • либо удаляет из него верхний шар (если снеговик не пустой).

Учитель Андрей Сергеевич Учитель записал последовательность действий и теперь хочет узнать суммарную массу всех построенных снеговиков.

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

Первая строка содержит количество действий [latex] n (1 ≤ n ≤ 200000).[/latex] В строке номер [latex]i+1[/latex]содержится описание действия:

  • [latex]t[/latex] [latex]m[/latex]— клонировать снеговика номер [latex] t (0 ≤ t < i) [/latex] и добавить сверху шар массой [latex]m (0 < m ≤ 1000)[/latex];
  • [latex]t[/latex] [latex]0[/latex] — клонировать снеговика номер [latex]t (0 ≤ t < i)[/latex] и удалить верхний шар. Гарантируется, что снеговик не пустой.

В результате действия [latex]i[/latex], описанного в строке [latex]i+1 [/latex] создается снеговик номер [latex]i [/latex]. Изначально имеется пустой снеговик с номером ноль.

Все числа во входном файле целые.

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

Выведите суммарную массу построенных снеговиков.

Решение: 

Считываем [latex]n[/latex] — количество действий. Задаем двухмерный массив размером [latex] [n+1][2] [/latex]. Указываем значение первого элемента равное [latex]0 [/latex] и нулевого элемента равного [latex]-1 [/latex], чтобы он ни на что не ссылался в начале.  В цикле считываем номер снеговика, которого нужно клонировать и массу шара, которую нужно добавить. Если масса шара равна [latex]0 [/latex], то мы клонируем снеговика и убираем последний его шар, ссылаясь на снеговика в котором этого шара еще не было. Если же масса шара не равно [latex]0[/latex], то мы клонируем снеговика и добавляем ему шар массой [latex]m [/latex]. Во второй ячейке указываем предка с которого строится новый снеговик. Выводим общую массу снеговиков.

Тесты:

Input Output
8
0 1
1 5
2 4
3 2
4 3
5 0
6 6
1 0
74
4
0 3
1 2
2 1
1 1
18

 

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

А137а

Задача:

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

Вычислить:

[latex] a_1, a_1 + a_2, \cdots, a_1 + a_2 + \cdots + a_n [/latex]

Решение:

Для подсчёта суммы в данной задаче надо было организовать цикл for (поскольку указано количество элементов в ряду), и с каждой итерацией прибавлять к результату result (которому предварительно придано значение 0) введённое с клавиатуры значение, потом выводить результат на экран.

Тесты:

Кол-во элементов [latex] a_1, \cdots ,a_n [/latex] Результат
7 1, 2, 3, 4, 5, 6, 7 1, 3, 6, 10, 15, 21, 28
10 10, 12, 14, 16, 18, 20, 21, 23, 25, 27 10, 22, 36, 52, 70, 90, 111, 134, 159, 186
5 0.1, 0.2, 0.3, 0.4, 0.5 0.1, 0.3, 0.6, 1.0, 1.5

Тест на tryHaxe
Задача взята с источника

А136д

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

Входные данные
$n$ — количество элементов последовательности ($n > 0$). $a$ — значение элемента, прочитанного из входного потока

Выходные данные
$sum$ — переменная для хранения суммы последовательности

Тесты

$n$ $a$ $sum$
2 5, 8 89
3 6, 13, 4 221
7 2, 4, 8, 16, 32, 64, 128 21844

Код

Решение
Из входного потока считывается число $n$ — кол-во элементов последовательности. Затем начинается цикл с условием «пока $n$ не равно нулю». Из входного потока считывается следующий элемент. К переменной $sum$ суммируются вычисления $a * a$, после чего декрементируется $n$. В выходной поток подаётся значение переменной $sum$.

Ю 4.24

Ссылка оригинальную статью

Ссылка Try Haxe!

 

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

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

Тесты:

Ввод Вывод
1 1 1 1 1 1 1 1 2 3 4 5
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

Код:

Ход решения:

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

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

Код

Решение

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

e-olymp 141. Минимальная сумма цифр

Задача. Сколько натуральных чисел из промежутка [M,N] имеют наименьшую сумму цифр ?

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

Входные данные:
Во входном файле два числа [latex]\textrm{M}[/latex] и [latex]\textrm{N}[/latex] ([latex]1\leq \textrm{M}\leq \textrm{N}\leq 1000000[/latex]) .

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

В выходной файл нужно записать ответ — одно число.

Тесты

M N Вывод
1 1 100 3
2 2 17 1
3 32 1024 2
4 1 1000000 7
5 10 10 1

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

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

Для решения данной задачи зададим функцию, которая возвращает сумму чисел вводимого нами числа. После ввода границ необходимого промежутка присваиваем минимальную сумму[latex]\textrm{M}[/latex]. Теперь задаём цикл со счётчиком i от [latex]\textrm{M + 1}[/latex] до [latex]\leq \textrm{N}[/latex]. В случае, когда сумма чисел счётчика меньше сумме цифр числа [latex]\textrm{M}[/latex], присваиваем ей (сумме цифр счётчика i) минимальную сумму цифр и выводим единицу. В противном случае увеличиваем счётчик на единицу и выводим полученный результат. Выводимое число и будет количеством натуральных чисел на промежутке, имеющих наименьшую сумму цифр.

Код программы можно найти здесь.