Циклы

47 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
66180#66180
Натуральные числа, которые можно выразить в виде суммы двух или более последовательных натуральных чисел, называются вежливыми числами. С другой стороны, натуральные числа, которые нельзя выразить подобным образом, называются невежливыми.
Ваша задача не только определить является натуральное число вежливым, но и подсчитать количество способов, которыми число можно выразить в виде суммы последовательных натуральных чисел. Для невежливых чисел это значение будет равно одному, а для вежливых - двум и более.
Например, число 42 - вежливое, и его можно выразить как
а) 3+ 4 + 5 + 6 + 7 + 8 + 9;
б) 9 + 10 + 11 + 12;
в) 13 + 14 + 15;
г) 42.
Число 512 будет невежливым, так как для него существует единственное представление
а) 512

Входные данные
Одно натуральное число N (N <= 106)
Выходные данные
Одно натуральное число - количество представлений N в виде суммы последовательных натуральных чисел
66172#66172
Белочка живет в дубовом парке. Каждый день до обеда она собирает ровно К желудей и складывает их в дупле одного из дубов. Последнее время вечером каждого воскресенья в парк приходит мальчик Витя. Он обнаружил дупло, в котором белочка хранит жёлуди. Для своих игр он каждый раз забирает Т желудей из дупла.
Известно, что после последнего прихода Вити в парк, в дупле осталось Х желудей. Необходимо определить через сколько дней после этого прихода Вити, белочка сможет собрать не менее М желудей в дупле.

Формат ввода
На вход программе в одной строке подается четыре целых числа, записанные через пробел К, M, Т, Х (1≤ К, M, Т, Х ≤109).
Формат вывода
Вывести одно целое число – количество дней, через которое белочка сможет собрать необходимое число желудей.
Если белочка не сможет собрать нужное число желудей никогда, вывести число -1.
65993#65993
Коля на летних каникулах занимается ерундой, плохо и неумело прокачивая персонажа в онлайн-игре. Вместо любой предлагаемой активности он ходит по локациям и охотится на монстров, зарабатывая очки опыта. Вдобавок к этому после каждой удачной охоты он пишет, сколько теперь у его персонажа процентов опыта, нужного для повышения уровня. После повышения уровня отсчет начинается заново. Определите по записям, сколько уровней получил Коля, если известно, что никакой монстр не даст ему два уровня сразу. Кроме этого, монстры дают не очень много опыта, поэтому после повышения уровня процент достижения следующего не может превышать предыдущее значение в записях.

Формат ввода
На вход программе в первой строке подается натуральное число N, не превышающее 10000 – количество уничтоженных монстров.
Далее в N строках подается по одному натуральному числу vi, не превышающему 99 – процент выполнения задачи в попытке номер i.
Формат вывода
Вывести одно целое число – сколько уровней набрал персонаж Коли за летние каникулы.
65984#65984
Прибор передает результаты измерений блоками информации. Каждый блок представляет собой набор цифр в шестнадцатеричной системе счисления (0123456789ABCDEF). Последняя цифра пятеричной записи суммы цифр блока показывает код ошибки, где 0 означает корректную передачу данных. Предпоследняя цифра пятеричной записи суммы цифр блока показывает тип результата:
0: «Излучение»
1: «Вспышка»
2: «Нагрев»
3: «Охлаждение»
4: «Перегрузка»
Определите количество результатов «Перегрузка», которые были переданы без ошибок после приема n блоков данных.

Формат ввода
В первой строке программе подается на вход число натуральное число n, не превышающее 1000.
Далее в каждой из n строк идет блок данных – набор цифр в шестнадцатеричной системе счисления (0123456789ABCDEF), длина блока не превышает 100 знаков.
Формат вывода
Вывести одно число – количество результатов «Перегрузка», которые были переданы без ошибок после приема n блоков данных.
В стране Олимпиадии снова выборы.

Страна состоит из маленьких графств. Графства объединяются в конфедерации. Каждая конфедерация раз в год выбирает себе покровителя – одного из 200 жрецов. Этот ритуал называется Великими Перевыборами Жрецов и выглядит так: конфедерации одновременно подают заявления (одно от конфедерации) в Совет Жрецов о том, кого они хотели бы видеть своим покровителем (если заявление не подано, то считают, что конфедерация хочет оставить себе того же покровителя). После этого все заявки удовлетворяются. Если несколько конфедераций выбирают одного и того же Жреца, то они навсегда объединяются в одну. Таким образом, каждый Жрец всегда является покровителем не более чем одной конфедерации. Требуется написать программу, позволяющую Совету Жрецов выяснить номер Жреца-покровителя каждого графства после Великих Перевыборов. В Совете все графства занумерованы (начиная с 1). Все Жрецы занумерованы числами от 1 до 200 (некоторые из них сейчас могут не быть ничьими покровителями).

Входные данные
В первой строке записано число N – количество графств в стране (1 ≤ N ≤ 5000) – и далее для каждого графства записан номер Жреца-покровителя конфедерации, в которую оно входит (графства считаются по порядку их номеров). Затем указаны заявления от конфедераций. Сначала записано число M – количество поданных заявлений, а затем M пар чисел: первое число – номер текущего Жреца-покровителя, второе – номер желаемого Жреца-покровителя.

Все числа во входном файле разделяются пробелами и (или) символами перевода строки.

Выходные данные
Вывести для каждого графства одно число – номер его Жреца-покровителя после Великих Перевыборов. Сначала – для первого графства, затем – для второго и т.д.
Оргкомитет Московской городской олимпиады решил организовать обзорную экскурсию по Москве для участников олимпиады. Для этого был заказан двухэтажный автобус (участников олимпиады достаточно много и в обычный они не умещаются) высотой 437 сантиметров. На экскурсионном маршруте встречаются N мостов. Жюри и оргкомитет олимпиады очень обеспокоены тем, что высокий двухэтажный автобус может не проехать под одним из них. Им удалось выяснить точную высоту каждого из мостов. Автобус может проехать под мостом тогда и только тогда, когда высота моста превосходит высоту автобуса. Помогите организаторам узнать, закончится ли экскурсия благополучно, а если нет, то установить, где произойдет авария.

Входные данные
Во входном файле сначала содержится число N (1 ≤ N ≤ 1000). Далее идут N натуральных чисел, не превосходящих 10000 - высоты мостов в сантиметрах в том порядке, в котором они встречаются на пути автобуса.

Выходные данные
В единственную строку выходного файла нужно вывести фразу "No crash", если экскурсия закончится благополучно. Если же произойдет авария, то нужно вывести сообщение "Crash k", где k - номер моста, где произойдет авария. Фразы выводить без кавычек ровно с одним пробелом внутри.
Решение каждой задачи заочного тура проверяется на наборе заранее заготовленных тестов. По результатам работы программы на каждом тесте участнику либо начисляются баллы за этот тест (когда программа выдала правильный ответ), либо не начисляются (когда во время работы программы произошли ошибки или выданный ответ не верен). Тесты могут иметь разную стоимость.

Дополнительные баллы начисляются участнику, если его программа прошла все тесты.

Участник может исправлять свое решение, и посылать его на проверку повторно (при этом решение проверяется на том же наборе тестов). При этом за каждую попытку из количества набранных по задаче баллов вычитается штраф, который равен 0 при 1-й попытке, а при каждой следующей возрастает на 2 (то есть 2 при второй, 4 — при третьей, 6 — при четвертой и т.д.).

Из баллов, полученных участником за каждую из попыток (с учетом начисленных штрафов), выбирается максимальный результат, который и засчитывается как результат данного участника по этой задаче. Это нужно, в частности, для того, чтобы последующие попытки не ухудшали уже полученный участником результат по задаче.

Например, если участник делает первую попытку и набирает 10 баллов, его результат по задаче равен 10 баллов. Пусть на второй попытке участник посылает решение, которое набирает 8 баллов. С учетом штрафа за эту попытку участник имеет 6 баллов, однако результат команды по задаче остается равным 10. Пусть с 3-й попытки решение набрало 20 баллов, тогда (с учетом штрафа) результат участника по задаче становится равен 16 баллам. Наконец, пусть с 4-й попытки решение проходит все тесты, тогда участник получает сумму баллов за все тесты, плюс призовые баллы за прохождение всех тестов, минус 6 баллов штрафа (если, конечно, эта величина не меньше 16 баллов, которые уже были у данного участника).

Напишите программу, которая определяет результат данного участника по этой задаче.

Входные данные
Во входном файле записано сначала число N — количество тестов, на которых проверяются решения данной задачи (1≤N≤100). Далее идет N натуральных чисел, не превышающих 100, — баллы, которые начисляются за прохождение каждого из тестов. Далее идет целое число из диапазона от 0 до 100 — количество баллов, которое дополнительно начисляется за прохождение всех тестов.

Далее идет натуральное число M — количество попыток сдачи задачи (1≤M≤100). После чего идет M наборов по N чисел в каждом, задающих результаты проверки каждой из M попыток сдачи задачи на тестах. 0 обозначает, что соответствующий тест не пройден, 1 — пройден.

Выходные данные
В выходной файл выведите M чисел. i-ое число должно соответствовать результату участника после совершения им первых i попыток.
Даны две таблицы. В первой записана информация о школьниках (фамилия, имя и номер школы), а во второй – информация о результатах экзамена (фамилия, имя школьника и его оценка за экзамен). Требуется составить сводную таблицу, в которой будет указан номер школы и средняя оценка за экзамен всех учеников из этой школы (средняя оценка – это среднее арифметическое всех оценок, округленное до ближайшего сверху числа).

Входные данные
В первой строке вводится одно натуральное число N, не превосходящее 50 – количество школьников.

В следующих N строках вводится информация о школьниках в формате

Фамилия Имя Номер_Школы

Фамилия и имя не содержат пробелов, а номер школы – натуральное число, не превосходящее 2007.

В следующих N строках вводится информация об экзамене в формате

Фамилия Имя Оценка

Порядок учеников может быть иным, но имена и фамилии школьников такие же, как в предыдущем списке. Оценка – натуральное число от 2 до 5.

Гарантируется, что любые два школьника отличаются именем или фамилией.

Выходные данные
Вывести список, отсортированный по возрастанию номера школы, каждая строка которого имеет формат

Номер_Школы Средняя_Оценка
Есть кучка спичек. Играют двое. Сначала первый берет из кучки любое количество спичек от одной до пяти. Затем то же самое делает второй. Затем первый берет столько спичек, сколько есть у второго, затем второй берет столько спичек, сколько есть у первого и т. д. Выигрывает тот, кто не может сделать хода. Кто выигрывает при правильной игре?

Входные данные
Вводится одно число, не превосходящее 1000 – изначальное количество спичек.

Выходные данные
Вывести число 1, если первый игрок может выиграть независимо от действий второго, или число 2, если второй может выиграть независимо от действий первого. В остальных случаях вывести 0.
В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 70% от предыдущего значения. По данному числу y определите номер дня, на который суммарный пробег спортсмена составит не менее y километров.

Входные данные
На вход программа получает два действительных числа x и y . Числа положительные, действительные, не превосходят 1000, заданы с точностью до шести знаков после запятой.
Внимание! В некоторых тестах оба числа находятся на одной строке, а в некоторых — на разных!

Выходные данные
Программа должна вывести единственное целое число.
Сколько понадобится парт, чтобы рассадить A
школьников, если за одну парту можно посадить одного или двух человек? За каждой партой должен сидеть хотя бы один человек. Укажите все варианты.

Входные данные
Вводится одно натуральное число — A
 ( 1 ≤ A  ≤ 10000)

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

Входные данные
В первой строке вводится одно число N  (1 ≤ N ≤ 100) – общее количество прыжков, а затем N  чисел, описывающих прыжки. Модуль числа равен длине прыжка в сантиметрах; число отрицательное, если кузнечик начинал этот прыжок по направлению к другому кузнечику, и положительное – если от другого кузнечика. Числа по модулю не превосходят 100 и все отличны от 0. (Кузнечики могут перепрыгивать друг через друга. Гарантируется, что кузнечики не приземляются друг на друга.)

Выходные данные
Требуется вывести одно число – минимальное расстояние в сантиметрах, на которое сближались
Входные данные

Вводятся целые числа a и b. Гарантируется, что a не превосходит b


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

Выведите (через пробел) все четные числа от a до b (включительно).

По данному действительному числу a и целому неотрицательному n вычислите величину an.

Входные данные
Вводятся 2 числа - a и n.

Выходные данные
Необходимо вывести значение an.
Определите, сколько раз выполнится тело цикла, а также последнее число, которое будет выведено на экран в процессе выполнения программы. В ответе запишите два числа через пробел: сначала сколько раз выполнится цикл, затем последнее выведенное число. Если программа ничего не выводит на экран, то в вместо второго числа напишите слово None.
var n: integer;
begin
  n := {1};
  while n >= {2} do
  begin
    writeln(n);
    n := n - {3};
  end;
end.
Определите, сколько раз выполнится тело цикла, а также последнее число, которое будет выведено на экран в процессе выполнения программы. В ответе запишите два числа через пробел: сначала сколько раз выполнится цикл, затем последнее выведенное число. Если программа ничего не выводит на экран, то в вместо второго числа напишите слово None.
var n: integer;
begin
  n := {1};
  while n < {2} do
  begin
    writeln(n);
    n := n + {3};
  end;
end.
Благотоворительные организации каждый год собирают деньги на теплую одежду бедным. У главного героя этой задачи есть целых две куртки, но это не мешает ему страдать. Одна из его курток — зимняя, а вторая — демисезонная (в ней приятно ходить осенью или весной). Куртки подобраны идеально: в зимней куртке комфортно при температуре в x градусов или ниже, а в демисезонной – при температуре выше x градусов. В общем, жить бы ему и радоваться. Но откуда бы тогда появиться задаче?

Проблема нашего героя в том, что он, надевая сегодня не ту куртку, которую носил вчера, по- стоянно забывает переложить проездной, ключи и прочие полезные вещи в карман новой куртки. Немного подумав, он решил, что не совсем подходящая к сегодняшней температуре куртка — это не так плохо, как забытые вещи. Поэтому, если сегодня незначительно теплее, чем граничная температура, он все равно пойдет в зимней куртке, аналогично для демисезонной. Чуть более формально это звучит так: он меняет куртку с зимней на демисезонную, только если сегодня за окном есть хотя бы x + d  градусов, а с демисезонной на зимнюю — если за окном x − d  градусов или холоднее. Иногда ему, конечно, не очень комфортно на улице, но зато все вещи точно с собой.

По архиву прогноза погоды за последние n дней определите, сколько дней главному герою этой задачи было некомфортно. Считается, что в первый день он вышел в той куртке, в которой в этот день комфортно.

Входные данные
В первой строчке даны два вещественных числа x и d — граница температуры между куртками и отклонение температуры, которое герой задачи считает незначительным (−89≤x≤55, 1≤d≤6 ).

Во второй строчке дано целое число n, 1≤n≤105 — количество дней в архиве прогноза погоды.

В третьей строчке перечислены n вещественных чисел ti — температура в i-й день (−89≤ti≤55 ).

Выходные данные
Выведите одно число: количество дней, в которые герою задачи было некомфортно в той куртке, в которой он вышел в этот день
 
Примеры
Входные данные Выходные данные
1 5 1
7
6 7 4 4 2 3 7
0
2 0 2
4
-1 1 -1 1
2
Поделиться
Класснуть