воскресенье, 20 октября 2013 г.

Тренировочный тур к школьной олимпиаде 9-11 классов (2013) с решением

Задача 1-Сокращаем перемены

Ограничение времени:1 с
Ограничение памяти:2048 M
Требуется подсчитать, на сколько минут раньше будет заканчиваться k-й урок, если все перемены сократить на 5 минут.

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

Вводится одно натуральное число k, не превосходящее 7.

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

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

Пример

ВводВывод
3
10


Решение:

var
k:integer;
begin
readln(k);
case k of
1..7:writeln(5*k-5);
else
writeln('уроков не может быть больше 7');
end;
end.

Задача 2-Шестеренки

Ограничение времени:1 с
Ограничение памяти:2048 M
Даны две сцепленные шестеренки. У одной шестеренки N зубцов, у другой — K. Требуется найти, какое минимальное число поворотов на один зубчик требуется сделать, чтобы шестеренки вернулись в исходное состояние.

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

Вводится два натуральных числа N и K, каждое из которых не превосходящих 10 миллионов. Каждое число вводится в отдельной строке.

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

Выведите искомое количество зубчиков. Гарантируется, что оно не более миллиарда.

Пример

ВводВывод
2
3
6
6
21
42

Решение
var
  N, K, c, sum: longint;

function nok(N,K:longint):longint; 
var i:longint;
begin
  for i:=1 to N do
    if (N mod i = 0) and (K mod i = 0) then nok:=i;
end;

begin
  read(N,K);

  N:=N div nok(N,K);
  K:=K div nok(N,K);
  repeat
    sum := sum + N;
  until (sum mod K) = 0;
  write(sum*nok(N,K));
end.

Задача 4-Распаковка строчки

Ограничение времени:1 с
Ограничение памяти:2048 M
Будем рассматривать только строчки, состоящие из заглавных латинских букв. Например, рассмотрим строкуAAAABCCCCCDDDD. Длина этой строки равна 14. Поскольку строка состоит только из латинских букв, повторяющиеся символы могут быть удалены и заменены числами, определяющими количество повторений. Таким образом, данная строка может быть представлена как 4AB5C4D. Длина такой строки 7. Описанный метод мы назовем упаковкой строки.
Напишите программу, которая берет упакованную строчку и восстанавливает по ней исходную строку.

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

Программа получает на вход одну упакованную строку. В строке могут встречаться только конструкции вида nA, где n — количество повторений символа (целое число от 2 до 99), а A — заглавная латинская буква, либо конструкции вида A, то есть символ без числа, определяющего количество повторений. Максимальная длина строки не превышает 80. Входная строка обязательно заканчивается символом перевода строки.

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

В выходной файл выведите восстановленную строку.

Пример

ВводВывод
3A4B7D
AAABBBBDDDDDDD
22D7AC18FGD
DDDDDDDDDDDDDDDDDDDDDDAAAAAAACFFFFFFFFFFFFFFFFFFGD

Решение

var
  s:string;
  i,k:integer;
begin
 readln(s);
 i:=1;
     while i<=length(s) do
     begin
      k:=0;
      while (s[i]>='0') and (s[i]<='9') do begin
      k:=k*10;
      k:=k+ord(s[i]) - ord('0');
      inc(i);
      end;
      if k=0 then
      write(s[i])
      else
      while k>0 do begin
      dec(k);
      write(s[i]);
      end;
      inc(i);
      end;
 end.