Язык программирования

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

Примеры
Входные данные Выходные данные
1 5
    o
   ooo
  ooooo
 ooooooo
ooooooooo
По данному целому числу N распечатайте все квадраты натуральных чисел, не превосходящие N, в порядке возрастания. Из арифметических операций разрешается использовать только сложение и вычитание.

Входные данные: вводится натуральное число.

Выходные данные: выведите ответ на задачу.
 
Примеры
Входные данные Выходные данные
1 50 1 4 9 16 25 36 49
В мире волшебников серебряный сикль равняется 29 бронзовым кнатам, а 17 сиклей равны 1 золотому галеону. В мире маглов галеон равен примерно 5 фунтам. Однако курс обмена может меняться.

Рон старался учить заклинания, но не всегда у него получалось то, что он хотел. Недавно он нашел новую игру «Казино волшебников». В этом казино играют на виртуальные сикли, а каждый раунд игры состоит в применении того или иного заклинания. Перед началом игры у Рона ноль сиклей на счету, но программа в любой момент предоставляет ему неограниченный кредит.

Перед началом каждого раунда программа сообщает, на какую тему будет очередное волшебное задание и Рон делает ставку на то, что он справится с заданием. В самом начале игры Рон всегда делает ставку в 1 сикль. Если Рон выполняет задание правильно, то он выигрывает раунд и ставка плюсуется к его счету. Если у него ничего не получилось, то он проигрывает, и ставка вычитается из его счета. Рон очень азартный, поэтому после проигрыша всегда увеличивает ставку в 2 раза. Однако после выигрыша, дабы не вспугнуть удачу, Рон всегда снижает ставку до 1 сикля. Наконец, одолев очередное задание, и выиграв этот раунд, Рон решает закончить игру.

Например, пусть Рон правильно выполнил первое задание (выиграл начальную ставку в 1 сикль, поставил на следующий раунд 1 сикль), затем не выполнил второе задание (проиграл 1 сикль и удвоил ставку), не справился с третьим заданием (проиграл 2 сикля и снова удвоил ставку), но четвертое задание ему все-таки удалось выполнить (выиграл 4 сикля, сбросил ставку на 1 сикль). Затем он правильно выполняет и пятое задание (выиграл 1 сикль) и заканчивает игру. Итого на его счету после игры: 1 – 1 – 2 + 4 + 1 = 3 сикля.

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

Входные данные: Первая строка содержит целое число N (0 < N ≤ 2000) — количество заданий, которое выполнил Рон. В следующих N строках располагаются числа 0 или 1 (по одному числу в строке): 1, если Рон выполнил очередное задание, и 0 – если не выполнил
Выходные данные: Выведите одно целое число — выигрыш или проигрыш Рона (выигрыш определяется положительным числом, а проигрыш – отрицательным).

Примеры
Входные данные Выходные данные
1 5
1
1
0
1
1
4
Напишите процедуру с параметром n, которая выводит ёлочку с кроной высотой n.
Основная программа должна содержать ввод значения переменной n и вызов процедуры.
 
 
Примеры
Входные данные Выходные данные
1 5
    o
   ooo
  ooooo
 ooooooo
ooooooooo
Напишите процедуру с параметром n, которая выводит ёлочку с кроной высотой n. Основная программа должна содержать ввод значения переменной n и вызов процедуры.
 
Примеры
Входные данные Выходные данные
1 5
    o
   ooo
  ooooo
 ooooooo
ooooooooo
Даны натуральное число n и целые числа a1, a2, ..., an. Найти номер минимального четного числа. Если чисел с минимальным четным значением несколько, то должен быть найден номер первого из них. 

Входные данные: в первой строке вводится число N - количество чисел в последовательности (0<N<100), а затем N целых чисел.
Выходные данные: выведите ответ на задачу

Примеры
Входные данные Выходные данные
1 7
4
9
6
-3
-4
8
-2
5
 
 
Дано натуральное число N (\(N<=10^9\)). Определить две самые большие цифры числа. 

Входные данные 
На вход подается одно число (число содержит как минимум 2 различные цифры).

Выходные данные 
Выведите две цифры через пробел, сначала наибольшую цифру числа, затем вторую по величине (не равную первой наибольшей цифре).
 

 

Примеры
Входные данные Выходные данные
1 45545 5 4
2 1113 3 1
Дано натуральное число N (\(N<=10^9\)). Определить его максимальную четную и минимальную четную цифры.

Входные данные 
На вход подается одно число.

Выходные данные 
Выведите через пробел два числа: сначала минимальную четную цифру, затем максимальную. Если четных цифр в числе нет, выведите NO.

Гарантируется, что если в  числе есть четные цифры, то их не менее двух.

 

Примеры
Входные данные Выходные данные
1 45545 4 4
2 111 NO
Дана непустая последовательность целых чисел, оканчивающаяся нулем. Ноль в последовательность не входит, служит признаком ее окончания. Найти количество чисел последовательности, которые больше первого введенного числа.

Входные данные 
На вход поступают числа последовательности, по одному числу в строке. Ноль - признак окончания ввода.

Выходные данные 
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 3
5
3
4
7
0
3
Дана последовательность целых чисел. Найти в ней наименьшее нечетное число. В последовательности имеется как минимум одно нечетное число

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

Примеры
Входные данные Выходные данные
1 7
4
2
5
-1
-4
6
-2
-1
Один древнеримский торговец брал несколько раз ссуду в древнеримском банке. Каждый раз банкир записывал размер выданной ссуды на листе пергамента, используя римские числа. Но ввиду дороговизны пергамента запись производилась плотно и все числа оказались записанными подряд, без разделителей. Когда торговец пришёл возвращать ссуду, оказалось, что невозможно установить разбиение записи на числа.

Например, если на пергаменте записана строка «XIIV», её можно разбить на римскиечисла разными способами, например, XI + IV = 11 + 4 = 15 или XII + V = 12 + 5 = 17, возможны и другие варианты разбиения.

Торговец хочет вернуть как можно меньше денег, поэтому он хочет так разбить строку цифр на римские числа, чтобы сумма всех чисел была как можно меньше.

Программа получает на вход строку, длина которой не превосходит 250 символов. Строка состоит только из заглавных латинских букв I, V, X, L, С, D, M.

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

Правила записи римских чисел
Римскими цифрами можно записать целые числа от 1 до 3999. Число представляется в виде суммы тысяч, сотен, десятков и единиц. Далее из следующей таблицы берётся по одному элементу, соответствующему тысячам, сотням, десяткам, единицам ровно в таком порядке.



Если число тысяч, сотен, десятков, единиц равно 0, то из соответствующего столбца ничего не берётся. Например, число 1990 записывается, как 1000 + 900 + 90 = MCMXС.
Ввод Вывод
XIIV 15

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

Входные данные
Первая строка содержит размер массива N. Во второй строке через пробел задаются N чисел – элементы массива ai (-109<=ai<=109). Гарантируется, что 0 < N <= 10000.

Выходные данные
Программа должна вывести в одной строке через пробел все элементы исходного массива, которые встречаются более одного раза, в том же порядке, в каком они встречаются в первом массиве. Если таких нет, нужно вывести число 0.
 
Примеры
Входные данные Выходные данные
1 6
4 1 2 1 2 3
1 2
На вход подается число N - количество элементов массива. 
Далее идут два массива из N целых чисел каждый:
- элементы первого массива идут по одному в каждой строке;
- элементы второго массива - записаны все в одной строке через пробел.
Заполните два массива и выведите их элементы через пробел в одну строку:
- первый массив в первой строке;
- второй массив во второй строке.
 
Примеры
Входные данные Выходные данные
1 3
1
2
3
4 5 6
1 2 3
4 5 6
Во время последней секретной операции Капитану Марвел удалось выкрасть закодированное
секретное сообщение скруллов — строку s. Однако, в закодированном виде никакой полезной информации оно из себя не представляет, поэтому его непременно нужно раскодировать.
Несмотря на развитость скруллов, их система кодирования сообщений проста и общеизвестна:
• Перед кодированием сообщения выбирается цифра d (0 <= d <= 9)
• Символы сообщения рассматриваются слева направо
• У каждого символа сообщения вычисляется его ASCII-код (например, у «a» он равен 97, у
«b» — 98, у «z» — 122)
• Если код трехзначный, он дописывается к текущей закодированной строке как есть, если же
код двузначный, к нему в случайное место добавляется цифра d и полученный результат
дописывается к текущей закодированной строке (например, если d = 3, а текущая буква —
«a», к текущей закодированной строке могут дописатсья числа 397, 937 или 973)
• После обработки всех букв, результатом считается полученная закодированная строка
Число d обычно передается вместе с сообщением, но Капитану Марвел не удалось его найти. Однако, она точно знает, что исходное сообщение состояло только из строчных и заглавных латинских
букв. Она понимает, что без числа d раскодировать сообщение однозначно может не получиться, поэтому для начала хочет посчитать, сколько существует различных строк t, состоящих из строчных
и заглавных латинских букв, таких, что, закодировав их, получится строка s. Так как наша героиня
не может быть полностью уверена, что сообщение было перехвачено полностью, вполне возможно,
что его невозможно декодировать ни одним способом.
Помогите нашей героине — найдите количество этих строк по модулю 109 + 7.

Формат входных данных
В единственной строке содержится закодированная строка s, выкраденная Капитаном Марвел
(3 <= |s| <= 105). Гарантируется, что строка s состоит только из цифр, а также что ее длина кратна 3.
Формат выходных данных
В единственной строке выведите одно число — количество различных строк, состоящих из строчных и заглавных латинских букв, которые кодируются в строку s, по модулю 109 + 7.
 
Ввод Вывод
988 2
100905 1
600 0
 
Замечание
В первом примере закодированную строку можно получить из «b», если d = 8, а также из «X», если d = 9.
Во втором примере закодированную строку можно получить только из «dZ» при d = 5.

 
С целью поиска закономерностей иногда полезно сгенерировать длинную последовательность по определенным правилам. Известно, например, что последовательность 0, 0+ 1, 0+ 1+ 3, 0+ 1+ 3+ 5,
. . . , 0 + 1 + 3 + . . . + (2n − 1), . . ., составленная из сумм нескольких первых нечетных натуральных чисел, состоит из квадратов целых чисел: 0, 1, 4, 9, . . . , n2, . . ..
Обобщим эту последовательность следующим образом: будем использовать вместо начального значения не ноль, а число k. Получим последовательность: k, k + 1, k + 1 + 3, k + 1 + 3 + 5, . . . ,k+ 1+ 3+. . .+ (2n−1), . . ..  В отличие от случая k = 0, в этой последовательности могут встречаться не только полные квадраты. Необходимо найти минимальное целое неотрицательное число, квадрат которого встречается в этой последовательности.

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

Формат входных данных
В единственной строке содержится целое число k — начальное число в последовательности
(−1012 <= k <= 1012).
Обратите внимание, что для считывания и хранения такого большого числа необходимо использовать 64-битный тип данных.

Формат выходных данных
Выведите минимальное неотрицательное целое число, квадрат которого встречается в описанной
последовательности. Если в последовательности не встречается квадратов целых чисел, выведите
«none».
 
Ввод Вывод
0 0
-5 2
2 none
 
Неотъемлемой частью программного обеспечения любого мобильного телефона является записная книжка. В самых первых мобильных телефонах в ней можно было хранить лишь имена абонентов и их телефонные номера. В более современных моделях в ней можно также хранить множество другой полезной информации — электронный адрес человека, его фотографию, ссылки на его страницы в социальных сетях и дату его рождения. Однако, при реализации даже самой простой версии этой программы, позволяющей работать только с телефонными номерами, разработчики иногда сталкиваются с некоторыми сложностями.

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

При отображении телефонного номера на экране телефона, части этого номера принято отделять друг от друга различными символами так, чтобы номер было проще прочитать и запомнить. Так, перед кодом страны обычно ставится символ «+», код региона или оператора берется в скобки, номер абонента разделяется символами «-» на несколько частей. При этом, то, на сколько частей он разбивается, напрямую зависит от количества цифр в нем:
• если номер абонента состоит из трех цифр, то он представляет собой одну часть, состоящую из трех цифр;
• если номер абонента состоит из четырех цифр, то он разбивается на две части, каждая из которых состоит из двух цифр;
• если номер абонента состоит из пяти цифр, то он разбивается на две части, первая из которых состоит из трех цифр, а вторая — из двух;
• если номер абонента состоит из шести цифр, то он разбивается на три части, каждая из которых состоит из двух цифр;
• если номер абонента состоит из семи цифр, то он разбивается на три части, первая из которых состоит из трех цифр, а все остальные — из двух.

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

Формат входных данных
Первая строка файла содержит одно целое число n (1 ≤ n ≤ 100) — количество государств, информация про телефонные коды которых записана в память телефона. Далее следуют n описаний этих государств, разделенных переводами строк. Первая строка описания каждого государства содержит два целых числа c и k (1 ≤ c ≤ 999, 1 ≤ k ≤ 100) — телефонный код этого государства и количество операторов или регионов, существующих в этом государстве. Следующие k строк описания этого государства содержат целые числа, каждое из которых не меньше 100 и не больше 99999 — коды операторов или регионов, зарегистрированных в этом государстве.
Следующая строка входного файла содержит одно целое число m (1 ≤ m ≤ 10 000) — количество телефонных номеров, которые необходимо отформатировать. Следующие m строк содержат сами номера — строки, состоящие ровно из 11 цифр.
Гарантируется, что ни один данный вам номер невозможно разбить на код государства, код оператора или региона и номер абонента более, чем одним способом.

Формат выходных данных
Выведите номера, данные вам во входном файле, отформатированными по правилам, описанным в условии. Каждый номер необходимо вывести в отдельной строке. Номера необходимо выводить в том же порядке, в котором они были перечислены во входном файле. Вместо номеров, корректного разбиения которых на код государства, код оператора или региона и номер абонента не существует, необходимо вывести слово «Incorrect».
 
Ввод Вывод
2
7 3
981
3517
812
351 3
34712
1234
963
8
79818266456
35196328463
78122472557
01234567890
73517960326
35134712239
35112342013
78120203040
+7(981)826-64-56
+351(963)284-63
+7(812)247-25-57
Incorrect
+7(3517)96-03-26
+351(34712)239
+351(1234)20-13
Incorrect
Реализуйте на одном из языков программирования алгоритм, представленный на схеме. Выражение S mod K означает вычисление остатка от деления S на K.
В первой строке ввода содержится целое число N (1 ≤ N ≤ 100). Далее следует N строк, содержащих по одному целому числу в диапазоне от 1 до 1000.
Вывести сообщение Yes или No как указано в алгоритме.


 
Ввод Вывод
3
2
1
3
Yes
3
1
2
3
No
Таймер - это часы, которые умеют подавать звуковой сигнал по прошествии некоторого периода времени. Напишите программу, которая определяет, когда должен быть подан звуковой сигнал.
 
Входные данные:
В первой строке записано текущее время в формате ЧЧ:ММ:СС (с ведущими нулями). При этом оно удовлетворяет ограничениям: ЧЧ - от 00 до 23, ММ и СС - от 00 до 60. 
Во второй строке записан интервал времени, который должен быть измерен. Интервал записывается в формате Ч:М:С (где Ч, М и С - от 0 до 109, без ведущих нулей). Дополнительно если Ч=0 (или Ч=0 и М=0), то они могут быть опущены. Например, 100:60 на самом деле означает 100 минут 60 секунд, что то же самое, что 101:0 или 1:41:0. 
А 42 обозначает 42 секунды. 100:100:100 - 100 часов, 100 минут, 100 секунд, что то же самое, что 101:41:40.
 
Выходные данные:
В ответе выведите в формате ЧЧ:ММ:СС время, когда прозвучит звуковой сигнал. При этом если сигнал прозвучит не в текущие сутки, то дальше должна следовать запись +<кол-во> days. Например, если сигнал прозвучит на следующий день - то +1 days

Примеры
Входные данные Выходные данные
1
01:01:01 
48:0:0
01:01:01+2 days
2
01:01:01
58:119
02:01:00
3
23:59:59
1  
00:00:00+1 days

В первой строке входных данных записано число N (от 1 до 100). В каждой из последующих N строк записано сначала имя человека (не более 20 символов, без пробелов), а затем через пробел число (от 1 до 200) - его возраст.

Требуется вывести информацию в том же формате, увеличив число в каждой строке (кроме первой, где записано число N) на 1.

 
Примеры
Входные данные Выходные данные
1
2
Vasya 15
Emmanuil 137
2
Vasya 16
Emmanuil 138
 
Напишите функцию, вычисляющую сумму делителей числа

Используя данную функцию, напишите программу, которая среди n натуральных чисел, вводимых с клавиатуры, выводит на экран число с максимальным суммой делителей
Входные данные:
в первой строке вводится число n - количестве чисел (n<=100),
далее идут n строк по одному натуральному числу в строке
Выходные данные:
программа должна вывести одно  число, в котором сумма делителей числа максимальна среди всех чисел, если таких чисел несколько, то необходимо вывести число, которое встретилось в последовательности раньше

Количество баллов за задачу уточняется после ручной проверки (и будет снижено, в случае если вы не используете функцию!).
 

Пример

Ввод

Вывод

5
2
5
59
72
34
72
2
78
81
78
 
Поделиться
Класснуть