Линейные алгоритмы

41 задача
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Определите минимальное количество символов в строке из круглых скобок, которые нужно заменить на противоположный ( левую скобку на правую, или наоборот) , чтобы получить сбалансированную строку.
Существует несколько способов определить сбалансированную строку скобок. Например, такой: В строке должно быть одинаковое количество левых и правых скобок, и для любого ее префикса количество левых скобок должно быть не меньше, чем количество правых скобок.
Например, эти строки - сбалансированные () (()) ()(()())
А эти - нет: )( ())( ((())))
PROBLEM NAME: clumsy
Формат входных данных
* Строка 1: строка из скобок длиной не более 100,000 символов.


Формат выходных данных
* Строка 1: Одно целое число - минимальное количество скобок, которые нужно "переключить" , чтобы конвертировать заданную строку в сбалансированную.


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

В университетской столовой осталось K порций борща. В очереди стоят студенты, каждый хочет съесть определённое количество порций (голодные студенты бывают!).

Студент подходит к раздаче:
- Если борща хватает на его запрос - он получает всё и уходит СЧАСТЛИВЫМ
- Если борща осталось меньше, но хоть что-то есть - забирает остатки и уходит ГОЛОДНЫМ  
- Если борща совсем нет - уходит ЗЛЫМ

После обслуживания всех студентов повар хочет знать:
1. Сколько студентов ушли СЧАСТЛИВЫМИ
2. Сколько студентов ушли ГОЛОДНЫМИ
3. Сколько студентов ушли ЗЛЫМИ
4. Сколько порций борща осталось

Пояснение к примеру
- Было 10 порций
- Студент 1 хочет 3: получает 3, осталось 7 (СЧАСТЛИВ)
- Студент 2 хочет 5: получает 5, осталось 2 (СЧАСТЛИВ)  
- Студент 3 хочет 4: получает только 2, осталось 0 (ГОЛОДЕН)
- Студент 4 хочет 2: борща нет (ЗОЛ)
- Итого: 2 счастливых, 1 голодный, 1 злой, 0 остаток

 

Робот стоит на ступеньке номер X и должен добраться до ступеньки номер Y. Он может прыгать только на Z ступенек вниз за раз. Напишите программу, которая выводит номер ступеньки после каждого прыжка (если робот не может добраться точно до Y, он останавливается на ближайшей возможной ступеньке).

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

  • X — начальная ступенька - целое число не больше 100

  • Y — целевая ступенька - целое число не больше 10

  • Z — размер прыжка - целое число не больше 10
    Каждое число в отдельной строке.

Выходные данные: номер ступеньки после каждого прыжка (каждое число на новой строке)

Дано количество целых чисел \(n\). Далее в \(n\) строках вводятся целые числа (обозначим их как \(x\)).

Для каждого введённого числа \(x\) необходимо вычислить значение кусочной функции:
$$f(x) = \begin{cases}
(x + 3)^2 - 10, & \text{если } x < -1 \\
-x^2 + 6x - 5, & \text{если } -1 \leq x \leq 5 \\
|x - 8| + 2, & \text{если } x > 5
\end{cases}$$
Найти минимальное значение функции \(f(x)\) среди всех введённых чисел.

Формат входных данных:
Первая строка: \(n\) (\(1 \leq n \leq 100\)). 
Следующие \(n\) строк: целые числа (\(x\)). Каждое число по модулю не превышает по модулю 105.

Формат выходных данных
Два числа через пробел: значение \(x\) и минимальное значение \(f(x)\).
Даны три целых числа \(a\), \(b\) и \(c\)
Напишите программу, которая находит количество всех целых чисел от \(a \) до \(b\), которые при целочисленном делении на \(c\) дадут остаток, больший 4

Входные данные: 
В первой строке вводятся три целых числа \(a\), \(b\) и \(c\) (\(a <= b\),  a,b не больше 100 по модулю, 0<=с<=9)

Выходные данные:
Программа должна вывести одно число -  количество всех целых чисел от a до b, которые при целочисленном делении на с дадут остаток, больший 4

Примеры
Входные данные Выходные данные
1 1 10 9 4

На дискотеке в ряд стоят три прожектора, которые поочерёдно светят в следующем порядке: левый, средний, правый, средний, левый, средний, правый, средний и т.д. (слева направо, затем налево, опять направо, ...). Каждый прожектор горит в течение одной секунды.

Известно, что лампа левого прожектора имеет ресурс A секунд горения, среднего – B секунд, правого – С секунд. Определите, сколько времени сможет продолжаться этот процесс горения прожекторов.

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

Программа получает на вход три целых неотрицательных числа A, B, C – время горения левого, среднего, правого прожектора.

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

Программа должна вывести одно целое число.

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

66402#66402
Риэлторская фирма “КвартирКа” решила добавить в своё приложение кредитный калькулятор для своих клиентов. На время тестирования нового обновления калькулятор был сделан более простым.

Формат входных данных
На входе программа получает ряд натуральных целых чисел, разделённых переносом строки: сумма кредита (10000<=x<=999999999), процентная ставка (годовая) ( 1<=x<=100), планируемая сумма для ежемесячного погашения кредита (10000<=x<=999999999).
Формат выходных данных
На выходе программа должна выдать возможно ли выплатить кредит по представленным параметрам в виде: “True” - если возможно, “False” - если невозможно и на следующей строке количество месяцев необходимое для выплаты кредита, если кредит выплатить невозможно следует вывести ноль.

Правила расчёта кредита: процентная ставка начисляется каждые 12 (и в момент взятия кредита) месяцев на остаток по кредиту. Затем в первую очередь клиент ежемесячно гасит задолженность по процентам, а потом по самому кредиту. Если за год (12 месяцев) клиент не может погасить задолженность по процентам, то такой кредит невозможно выплатить или срок погашения кредита превышает 600 месяцев. Затем клиент начинает гасить задолженность по самому кредиту. Процент на остаток по кредиту будет начисляться каждый 12-ый месяц, выплата этих процентов будет начинаться со следующего за ним.

Пример: сумма кредита - 50.000, процентная ставка 50%, планируемая сумма погашения 10.000. В первый месяц будут начислены процента на долг, который составит 25.000. В первый месяц вся сумма пойдёт на погашения процентов 25.000-10.000. Во второй месяц, аналогично 15.000-10.000. В третий месяц 5.000 уйдёт на погашение долга по процентам и 5.000 на погашение задолженности, остаётся выплатить 45.000. В четвёртый месяц 45.000-10.000. В пятый 35.000-10.000. В шестой 25.000-10.000. В седьмой 15.000-10.000. На восьмой месяц кредит будет полностью погашен, так как не было набрано 12 месяцев проценты более не начислялись.
65872#65872
Автомат получает на вход последовательность целых чисел и складывает их по следующим правилам:
1) Если число чётное, автомат удваивает его и добавляет в сумму.
2) Если число нечётное, автомат добавляет его значение в сумму.
После обработки последовательности автомат вычитает из получившейся суммы максимальное число последовательности, кратное 3, и выводит получившееся значение как результат.
Располагая последовательностью, определите, какой результат выведет автомат.

Входные данные
На вход программе в первой строке подается натуральное число N (5 ≤ N ≤ 10000) – количество чисел. Далее в N строках подаётся по одному натуральному числу, не превышающему 1000. Если чисел, кратных 3, в последовательности нет, автомат ничего не вычитает.
Выходные данные
Вывести одно целое число – наибольшее возможное, которое можно получить по правилам, описанным в условии задачи.
65818#65818
Автомат получает на вход последовательность неотрицательных чисел, меньших 100, и работает с ними по следующим правилам:
1) Если количество единиц нечётно и превышает количество десятков,автомат добавляет количество десятков в первую контрольную сумму.
2) В противном случае автомат добавляет количество единиц во вторую контрольную сумму.
После обработки последовательности автомат вычитает меньшую сумму из большей и выводит результат.
Располагая последовательностью, определите, какой результат выведет автомат. Количество десятков в однозначном числе равно нулю.

Формат входных данных
На вход программе в первой строке подается натуральное число N (3 ≤ N ≤ 10000) – количество чисел. Далее в N строках подаётся по одному неотрицательному числу, меньшем 100.
Формат выходных данных
Вывести одно целое число – результат обработки последовательности, который можно получить по правилам, описанным в условии задачи.

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

Для этого Магане может один раз выбрать произвольный набор различных позиций в массиве и заменить элементы на этих позициях на противоположные, то есть умножить их на \(-1\). Например, чтобы сделать массив \([-4, 4, 1, 3, -10]\) отсортированным, она может умножить на \(-1\) числа на позициях \(2\) и \(5\), и получить массив \([-4, -4, 1, 3, 10]\).

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

Помогите ей с этой задачей! Поскольку итоговое количество способов может быть слишком большим, найдите ответ по модулю \(998244353\).

В первой строке ввода записано целое число \(n\) — количество элементов в массиве (\(1 \leqslant n \leqslant 10^6\)).

Формат входных данных
Во второй строке через пробел перечислены \(n\) целых чисел \(a_1\), \(a_2\), …, \(a_n\) — элементы массива (\(-10^9 \leqslant a_i \leqslant 10^9\)).

Формат выходных данных
Выведите одно число — количество способов отсортировать массив указанным образом (по модулю \(998244353\)).

 

В левом нижнем углу доски  размером NxM клеток стоит Робот. Он может ходить на одну клетку по горизонтали, вертикали или диагонали. Требуется переместить Робота в правый верхний угол за наименьшее количество ходов.

Формат входных данных

Вводятся два натуральных числа N (высота доски) и M (ширина доски), не превышающие 100.

Формат выходных данных

Выведите последовательность ходов в одном из возможных кратчайших путей. Каждый ход обозначается заглавной латинской буквой:
   U – вверх,
   R – вправо,
   D – вверх и вправо.
Буквы выводятся без пробелов в одной строке.
Напишите программу, которая вводит с клавиатуры два целых числа и выводит их сумму и разность первого и второго чисел.

Формат входных данных
В первой строке вводится первое целое число, во второй строке - второе целое число (каждое число не больше 100). 

Формат выходных данных
В первой строке выведите сумму введенных чисел. Во второй строке - их разность.
Billing#55178
Девочка Катя подключилась к тарифу “Очень выгодный”, на котором можно только звонить. Все входящие звонки бесплатны. В случае исходящего звонка не более k1 первых секунд звонка стоят p1 копеек, и позвонить можно только если эти деньги на счету есть. За следующие k2 секунд Катя платит по p2 копеек за секунду, а все остальное время девочка платит по p3 копеек за секунду. Деньги снимаются мгновенно после каждой секуны. Как только баланс становится неположительным, связь обрывается. Известно, что Катя положила N копеек на счет, чтобы поговорить со своим лучшим другом. Причем, она хочет потратить все N копеек на этот один телефонный звонок. Посчитатйте, сколько максимально секунд Катя сможет наслаждаться беседой.

Входные данные
Во входном файле записаны через пробел 6 целых чисел: 0 ≤ N ≤ 1000000, 1≤ k1,k≤ 1000000, 1 ≤ p1, p2, p≤ 1000000.

Выходные данные
В выходной файл выведите одно число: максимальное количество секунд, которое при заданных условиях могла выговорить девочка Катя в течение одного телефонного разговора.

Товар стоит a руб. b коп. За него заплатили c руб. d коп. Сколько сдачи требуется получить?


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

Вводятся 4 числа: ab, c и d.


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

Необходимо вывести 2 числа: e и f, число рублей и копеек, соответственно.

Дан набор из N отрезков различной длины. Сколькими способами можно выбрать из этих отрезков три, из которых можно составить (невырожденный) треугольник?

Входные данные
Сначала вводится количество отрезков, затем длины этих отрезков (еще N чисел).

Выходные данные
Программа должна вывести одно число - искомое количество способов.

Количество отрезков - не менее 3 и не более 20. Длина каждого отрезка - натуральное число, не превосходящее 1000. Все отрезки имеют разную длину.
Вася записывает в клетки квадратной таблицы NxN натуральные числа по порядку, сначала заполняя первую строку слева направо, затем вторую и т.д. (см. рисунок слева). Петя заполняет такую же таблицу, расставляя числа сначала в первый столбец сверху вниз, затем во второй столбец и т.д.
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
 
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16

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

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

Входные данные
Вводится одно число - размер таблицы.

Выходные данные
Программа должна вывести все числа, которые в обеих таблицах стоят на одном и том же месте, в порядке возрастания, через пробел.

Размер таблицы - натуральное число, не превосходящее 100.
Вычислите a+b.

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

Единственная строка входных данных содержит два натуральных числа через пробел. Значения чисел не превышают 109.

Выходные данные
Выведите на экран результат выражения a+b.
 
 

Саша очень любит нули. Но нули на конце числа не кажутся ему интересными. Разумеется, ведущие нули тоже не интересуют Сашу.

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

По заданному числу \(k\) выясните, чему равна его красота по мнению Саши.

Формат входных данных
Входные данные содержат одно число \(k\) (\(1 \le k \le 10^9\)).

Формат выходных данных

Выведите одно число — красоту числа \(k\) по мнению Саши.

Поделиться
Класснуть