Темы --> Информатика --> Алгоритмы --> Динамическое программирование --> Динамическое программирование: один параметр
---> 3 задач <---
Источники --> Командные олимпиады --> Командные чемпионаты школьников Санкт-Петербурга по программированию
    1999(5 задач)
    2000(7 задач)
    2001(8 задач)
    2002(8 задач)
    2003(9 задач)
    2004(9 задач)
    2005(10 задач)
    2006(10 задач)
    2007(10 задач)
    2008(9 задач)
    2009(10 задач)
    2010(10 задач)
    2011(9 задач)
    2012(10 задач)
    2013(10 задач)
    2014(11 задач)
    2015(11 задач)
    2016(11 задач)
Страница: 1 Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes
Есть число N. Играют два игрока, первый может отнять от числа любое число от 1 до K. На каждом следующем ходу можно отнять любое число от 1 до <предыдущий ход>+1. Проигрывает тот, кто возьмет последнюю спичку. Требуется вывести все первые ходы, приводящие к победе.

Петя придумал новую игру. На стол кладется кучка из N спичек, и затем Петя с Ваней по очереди берут спички из кучки. Первым берет Петя, ему разрешается взять от 1 до K спичек. Затем игрок может взять любое количество спичек, не более чем на 1 превышающее то количество, которое взял игрок перед ним (можно взять меньше или столько же, но обязательно хотя бы одну). Например, если N = 10, K = 5, то на первом ходу Петя может взять 1, 2, 3, 4 или 5 спичек, если Петя возьмет 3, то на следующем ходу Ваня может взять 1, 2, 3 или 4, и если Ваня возьмет 1, то Петя затем может взять 1 или 2, и т. д. Проигрывает тот, кто возьмет последнюю спичку.

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

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

На первой строке входного файла находятся числа N и K, разделенные пробелом. (1 K N 200).

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

Выведите в выходной файл все такие X, что, взяв на первом ходу X спичек, Петя выиграет. Если таких X не существует, выведите в выходной файл единственное число - 0. Числа следует разделять пробелами и выводить в порядке возрастания.

Примеры
Входные данные
2 2
Выходные данные
1 
Входные данные
5 4
Выходные данные
1 4 
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes
Загадывается число. Можно задавать вопросы с ответом Да или Нет (штраф за Да A конфет, за Нет B конфет). Требуется определить минимальное количество конфет, необходимое для отгадывания числа в худшем случае.

Петя и Маша играют в увлекательную игру. Маша загадывает число от 1 до \(n\), записывает его на чистый тетрадный лист, кладёт в конверт и запечатывает. После этого Петя пытается это число отгадать. Он может задавать любые вопросы про это число: "Верно ли, что это число равно трем?", "Верно ли, что это число – число Фибоначчи?", "Верно ли, что это число простое?" и так далее. Получив ответ "Да", Петя отдает Маше a конфет, а в случае ответа "Нет" – b конфет.

В какой-то момент Петя произносит сакраментальную фразу: "Я знаю, что это за число". После этого они распечатывают конверт в присутствии свидетелей, убеждаются в Петиной правоте, и, таким образом, Маша получает внушительную порцию конфет, а Петя – моральное удовлетворение.

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

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

Входной файл содержит три целых числа: \(n\) (1 ≤ \(n\) ≤ 1000), \(a\) и \(b\) (0 ≤ \(a\), \(b\) ≤ \(10^6\)).

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

Выведите одно число – минимальное количество конфет, которое должен иметь Петя, чтобы отгадать Машино число в худшем случае.

Примеры
Входные данные
8 1 1
Выходные данные
3
Входные данные
10 5 0
Выходные данные
5
Входные данные
7 0 2
Выходные данные
2
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Вы, наверное, замечали, что многие компании используют для рекламы «красивые» номера телефонов, которые удобны для запоминания потенциальными клиентами. Но что делать, если номер вашей компании ничем не примечателен? Можно присмотреться к нему повнимательнее, а вдруг, если перегруппировать цифры номера некоторым образом, номер станет намного красивее? Например, если у вашей компании номер 872-73-33, то его можно сделать красивее, если перегруппировать цифры так: 8727-333.

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

	 
Шаблон группы          Баллы	 
aa                     2	 
aba                    2	 
aab, abb               2	 
aaa                    3	 
abac, baca             2	 
abab                   3	 
aabb                   3	 
abba                   4	 
baaa, abaa, aaba, aaab 3	 
aaaa                   5

В этой таблице символами «a», «b», «c» обозначены различные цифры. Например под шаблон «aab» подходят группы «223», «667», но не подходят «123» и «888».

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

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

Входной файл содержит одну строку из 7 цифр – заданный телефонный номер.

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

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

Если разбиений с максимальной величиной красоты несколько, выведите в выходной файл любое из этих разбиений.

Примеры
Входные данные
8727333
Выходные данные
8727-333
5
Входные данные
8827291
Выходные данные
88-272-91
4

Страница: 1 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест