Отправляет email-рассылки с помощью сервиса Sendsay

Олимпиады на Turbo Pascal'е

  Все выпуски  

Turbo Pascal для школьников Выпуск N24


Информационный Канал Subscribe.Ru


Turbo Pascal для школьников

Выпуск №24
Перейти в архив>>

Доброго времени суток, уважаемые подписчики!!!

     В начале хочу извиниться перед Вами за столь долгое моё отсутствие. В этом выпуске постараюсь исправиться и опубликую условия десяти новых задач для нашего турнира. Надеюсь, что скучать Вам не придётся. Решения принимаются до конца марта, о новых правилах турнира я уже писал в предыдущем выпуске. Остаётся лишь добавить, что помимо турнирной таблицы на сайте, который появится в конце марта (ссылку я опубликую в рассылке) появятся также и решения предложенных сегодня мною задач. Если кто-нибудь из Вас, уважаемые подписчики, пожелает увидеть своё решение на сайте, то напишите мне вместе с решением, ещё и комментарии к Вашему решению данной задачи и упомяните о своём намерении. Если Ваша задача будет решена правильно, то скорее всего, она появится на сайте вместе с Вашими координатами (опять же, если Вы этого захотите). Среди задач есть как лёгкие, так и посложнее, так что скорее всего лидер определится однозначно, притом это не обязательно должен быть школьник. Итак, 10 новых задач.

Примечание для всех задач:
    Ограничение по времени: 5 секунд
    Файл входных данных: input.txt
    Файл выходных данных: output.txt
Задача №1 "Текст перевёртыш"

       Дан текст, состоящий из латинских и русских символов, цифр, знаков препинания. Слова в этом тексте перевернуты, т. е. было "пример" стало "ремирп". Необходимо вернуть тексту его первоначальное значение, то есть перевернуть все слова (и русские, и английские) независимо от регистра, оставив на своих местах пробелы, знаки препинания и цифры.

    Пример
    input.txt
    отЭ ремирп оготсорп атсет.
    output.txt
    Это пример простого текста.

Задача №2 "Свёртка строк"

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

    Пример
    input.txt
    aaa
    output.txt
    3(a)
    input.txt
    baaaa
    output.txt
    b4(a)
    input.txt
    baba
    output.txt
    2(ba)
    input.txt
    cdbcdbsdf
    output.txt
    2(cdb)sdf

Задача №3 "Прямоугольники"

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

    Формат входных данных:
    x1 y1 a1 b1 x2 y2 a2 b2
    Формат выходных данных:
    x3 y3 x4 y4 S

    Пример
    input.txt
    1 2 2 3 2 1 3 3
    output.txt
    1 1 5 4 12

Задача №4 "Последняя цифра"

       Задано N натуральных чисел a[1], a[2], a[3]..a[N] (1<=N<=10), значение каждого из которых находится в интервале от 1 до 1000. Найти последнюю цифру (X) числа (K), определяющего количество натуральных делителей произведения a[1]*a[2]*a[3]*..*a[N].

    Формат входных данных:
    N
    a[1] a[2] a[3] .. a[N]
    Формат выходных данных:
    X K

    Пример
    input.txt
    4
    3 5 7 720
    output.txt
    0 120

Задача №5 "Вещества"

       Имеется N перенумерованных, начиная с 1, химических веществ. В таблице взаимодействия этих веществ, имеющей размер N*N, на пересечении I-й строки и J-ого столбца стоит значение 0, если вещества с номерами I и J не взаимодействуют друг с другом, и значение K, если в результате реакции между этими двумя веществами возникает вещество с номером K (K<=N).
    Пробирку последовательно, по слоям заполняют тремя различными веществами. В соответствии с таблицей соседние слои могут взаимодействовать, приводя к появлению нового вещаства, которое тоже может вступать в рекацию с веществами из соседних слоев. Считается, что реакция происходит мгновенно.
    Требуется определить, какие вещества останутся в пробирке по завершении всех реакций.

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

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

    Формат выходных данных:
    Номер веществ, оставшихся в пробирке.

    Пример
    input.txt
    5
    1 4 0 2 0
    4 2 4 1 0
    0 4 3 2 1
    2 1 2 4 0
    0 0 1 0 5
    1 3 2
    output.txt
    2

Задача №6 "Куча мала"

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

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

    В первой строке содержится номер палочки, которую необходимо убрать. Далее содержится список, каждая строка которого состоит из чисел a и b от 1 до 50 через один пробел и обозначает, что на палочке с номером a лежит, непосредственно соприкасаясь, палочка с номером b. Конец списка завершается строкой с числами 0 0. Кучу во входных данных всегда можно разобрать, убирая палочки по одной.

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

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


    Пример
    input.txt
    3
    1 5
    2 5
    3 4
    9 3
    3 1
    0 0
    output.txt
    3

Задача №7 "Цифра последовательности"

       Дано натуральное k. Напечатать k-ую цифру последовательности 11235813..., в которой выписаны подряд все числа Фибоначчи (последовательность Фибоначчи - последовательность, где каждый член равен сумме двух предыдущих. В задаче последовательность начинается с 1).

    Пример
    input.txt
    4
    output.txt
    3

Задача №8 "Кол-во чисел"

       Написать программу, которая считает кол-во N-значных чисел в системе счисления с основанием K в записи которых нет двух подряд идущих нулей.

    Ограничения: 2<=K; 2<=N; 4<=N+K<=18
    Формат входных данных: числа N и K в десятичной записи.
    Формат выходных данных: единственное число, равное искомому кол-ву чисел.
    Пример
    input.txt
    2 10
    output.txt
    90

Задача №9 "Подсчёт баллов"

       Решение каждой задачи проверяется на наборе заранее заготовленных тестов. По результатам работы программы на каждом тесте участнику либо начисляются баллы за этот тест (когда программа выдала правильный ответ), либо не начисляются (когда во время работы программы произошли ошибки или выданный ответ не верен). Тесты могут иметь разную стоимость.
    Дополнительные баллы начисляются участнику, если его программа прошла все тесты.
    Участник может исправлять свое решение, и посылать его на проверку повторно (при этом решение проверяется на том же наборе тестов). При этом за каждую попытку из количества набранных по задаче баллов вычитается штраф, который равен 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 попыток.

    Пример
    input.txt
    4
    1 2 3 4
    5
    3
    0 0 0 0
    1 1 1 1
    0 1 0 1
    output.txt
    0
    13
    13
    input.txt
    2
    1 8
    0
    3
    0 0
    1 0
    0 1
    output.txt
    0
    0
    4

Задача №10 "Клад"

       Найти закопанный пиратами клад просто: всё, что для этого нужно - это карта. Как известно, пираты обычно рисуют карты от руки и описывают алгоритм нахождения клада так: "Встаньте около одинокой пальмы. Пройдите тридцать шагов в сторону леса, потом семнадцать шагов в сторону озера, …, наконец десять шагов в сторону большого булыжника. Клад находится под ним". Большая часть таких указаний просто сводится к прохождению какого-то количества шагов в одном из восьми направлений (1 - север, 2 - северо-восток, 3 - восток, 4 - юго-восток, 5 - юг, 6 - юго-запад, 7 - запад, 8 - северо-запад). Длина шага в любом направлении равна 1.
    Путешествие по такому пути обычно является прекрасным способом посмотреть окрестности, однако в наше время постоянной спешки ни у кого нет времени на это. Поэтому кладоискатели хотят идти напрямую в точку, где зарыт клад. Например, вместо того, чтобы проходить три шага на север, один шаг на восток, один шаг на север, три шага на восток, два шага на юг и один шаг на запад, можно пройти напрямую, использовав около 3.6 шага. Вам необходимо написать программу, которая по указаниям пиратов определяет точку, где зарыт клад.

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

    Первая строка входного файла содержит число N - число указаний (1<=N<=40). Последующие N строк содержат сами указания - номер направления (целое число от 1 до 8) и количество шагов (целое число от 1 до 1000). Числа разделены пробелами.

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

    В выходной файл выведите координаты X и Y точки (два вещественных числа, разделённые пробелом), где зарыт клад, считая, что ось Ox направлена на восток, а ось Oy - на север. В начале кладоискатель должен стоять в начале координат. Координаты необходимо вывести с погрешностью не более 0.001

    Пример
    input.txt
    6
    1 3
    3 1
    1 1
    3 3
    5 2
    7 1
    output.txt
    3.000 2.000
    input.txt
    1
    8 10
    output.txt
    -7.071 7.071

   Эти задачи Вы можете решать в любом порядке, лишь бы Вы прислали Ваши решения до конца марта. Решения можно посылать и для каждой задачи по раздельности. Единственная просьба: в теме письма указываете название рассылки и название задачи, решение которой Вы присылаете.

Желаю удачи!!!

На сегодня это всё. Пожелания и предложения пишите мне на e-mail: qsman1987@mail.ru

Рассылки Subscribe.Ru
Turbo Pascal для школьников    
   Рассылка 'Turbo Pascal для школьников'


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное