participation-old

Прием заявок на программу окончен.

Чтобы принять участие в нашей программе, Вам необходимо необходимо продемонстрировать базовые знания в программировании - выполнить одно из предложенных заданий и прислать нам исходный код. После того, как наши разработчики изучат Ваше решение, мы пригласим Вас на короткое интервью (30 мин) в офис компании.

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

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

Требования

  • Необходимо сделать только одну из предложенных задач, на Ваш выбор
  • Задача должна быть решена на C++ 
  • Мы ждем от Вас исходный код, а не скомпилированный результат. Пожалуйста, не нужно присылать нам *.obj, *.pdb, *.exe и прочие служебные файлы.
  • Внимательно прочитайте условия задачи, прежде чем приступать к написанию кода. Обратите внимание, как программа принимает параметры и что она должна выводить в stdout.
  • Ваши решения присылайте на kiev_internship@cqg.com, не забудьте приложить к письму резюме или кратие сведения о себе - ВУЗ, курс, факультет.

Задачи

1. Конфликты событий в календаре

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

Напишите программу, которая позволит вам узнать, какие конфликты событий есть в вашем календаре. Программа должна принимать один параметр командной строки - имя файла, в котором содержится список дел. 

Во входном файле перечисляются события в календаре, по одному событию на строку. Формат - <start_time> <end_time> <event_name>. Каждое событие ограничено одним днем - начало и конец определяются только часами и минутами, без дат.

Программа должны вывести в консоль список конфликтов (два или больше события в один момент времени), по одному на строку, указав время начала и конца пересечения, в формате <start_time> <end_time> <event1> + <event2> [+ <event3> ...]

Пример

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

8:00 15:00 Университет
12:00 13:00 Обед
12:45 13:15 Позвонить родителям
12:50 13:10 Компот
18:00 19:00 Дорога домой
19:00 20:00 Ужин

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

12:00 12:45 Университет + Обед
12:45 12:50 Университет + Обед + Позвонить родителям
12:50 13:00 Университет + Обед + Позвонить родителям + Компот
13:00 13:10 Университет + Позвонить родителям + Компот
13:10 13:15 Университет + Позвонить родителям

2. Игра в города

Программа для игры в "Города". Правила игры просты - первым называется любой город, например, Киев. Следующим нужно назвать город, который начинается на последнюю букву, "в", например, Владивосток. Следующий город должен начинаться на "к" и так далее. Названия городов не могут повторяться. Напишите программу, которая из набора названий городов (все названия разные) строит максимально длинную (а не просто первую подходящую) цепочку.

Программа должна принимать один параметр командной строки - название файла, содержащего список городов (по одному городу на строку).

Пример

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

Владивосток
Астана
Киев
Кострома
Денвер

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

Киев - Владивосток - Кострома - Астана

3. Шифр Цезаря

Шифр Цезаря - это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется буквой, находящейся на некоторое постоянное число позиций правее него в алфавите. Например, в шифре со сдвигом 3, A была бы заменена на D, K станет N, и так далее. Зашифрованный текст состоит только из английских букв A-Z. Пробел, знаки препинания, цифры и другие символы остаются неизменными.

Напишите программу, которая может расшифровать текст на английском литературном языке, зашифрованный шифром Цезаря с неизвестным смещением. Программа должна принимать один параметр командной строки - название файла, содержащего зашифрованный текст.

Очень Важное Примечание: Мы не будем рассматривать варианты программ, которые выводят на экран 26 вариантов текста с предложением человеку самому выбрать правильный.

Пример

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

WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ

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

THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

4. Арифметика длинных чисел

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

Программа должны принимать один параметр командной строки - имя файла, в котором находятся данные. Каждая строка данного файла имеет вид <x> <op> <y>, где x и y - числа, а op - операция +, - или *. Программа должна вывести в консоль результаты вычислений, по одному на строку.

Пример

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

123456789987654321 * 1255454987879432132132
456467913232134687 - 233333333
999999999999999999999999999999999999999 * 65467984321
65467984320999999999999999999999999999934532015679 * 1

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

154994442777584153776564216474412742372
456467912998801354
65467984320999999999999999999999999999934532015679
65467984320999999999999999999999999999934532015679
Comments