Страница: << 31 32 33 34 35 36 37 >> Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Рассмотрим произвольную последовательность целых чисел. Между числами можно расставить знаки арифметических операций + или – , и таким образом получать некоторые выражения, которые принимают различные значения. Например, если взять последовательность: 17, 5,  - 21, 15, то можно получить восемь различных выражений:

Назовем последовательность делящейся на натуральное K, если + и – могут быть расставлены так, что итоговое значение выражения будет делиться на K. В приведенном примере последовательность делится на 7  (17 + 5 +  - 21 - 15 =  - 14), но не делится на 5.

17

+

5

+

-21

+

15

=

16

17

+

5

+

-21

-

15

=

-14

17

+

5

-

-21

+

15

=

58

17

+

5

-

-21

-

15

=

28

17

-

5

+

-21

+

15

=

6

17

-

5

+

-21

-

15

=

-24

17

-

5

-

-21

+

15

=

48

17

-

5

-

-21

-

15

=

18

Ваша задача — написать программу, определяющую делимость последовательности на целое число.

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

Первая строка содержит два натуральных числа N и K(1 ≤ N ≤ 10000, 2 ≤ K ≤ 100), разделенные пробелом. Вторая строка состоит из N целых чисел, разделенных пробелами. Все числа не превосходят 10000 по модулю.

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

Выведите в выходной файл "Divisible", если данная последовательность делится на K или "Not divisible", в противном случае.

Примеры
Входные данные
4 7
17 5 -21 15
Выходные данные
Divisible
Входные данные
4 5
17 5 -21 15
Выходные данные
Not divisible
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
8 megabytes

В телеигре "The Price is Right" игроки (обычно четверо) соревнуются в угадывании стоимости того или иного предмета. Побеждает тот, кто назвал наиболее близкое число, не превосходящее ответа. Ввиду популярности телеигры "Кто Хочет Стать Миллионером", в которой участвует один игрок, American Contest Management (ACM) решило выпустить свою версию игры «The Price is Right» для одного игрока. В этой версии каждому участнику даётся G (1 ≤ G ≤ 30) попыток и L (0 ≤ L ≤ 30) жизней. Игроку требуется точно угадать стоимость предмета. Если очередная попытка верна, то игрок выигрывает. В противном случае он теряет попытку. Помимо того, если он называет число, большее ответа, то также теряет одну жизнь. Игрок проигрывает, если у него не остаётся попыток или он называет большую стоимость, не имея ни одной жизни. Все цены положительные целые числа. Оказывается, что для некоторых значений G и L при условии, что искомая стоимость лежит в интервале от 1 до N включительно, можно избрать заведомо выигрышную стратегию. ACM не хочет, чтобы выигрывал каждый участник, поэтому организаторы хотят быть уверены, что настоящая стоимость превосходит N. Но в то же время нельзя делать игру слишком сложной, поскольку в противном случае победителей будет слишком мало, и игра быстро потеряет популярность. Поэтому организаторы хотят подобрать значения G и L в зависимости от искомой стоимости. В связи с этим ACM попросило вас решить следующую задачу: по заданным значениям G и L найти максимальное значение N, при котором игрок может воспользоваться заведомо выигрышной стратегией.

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

На вход может подаваться сразу несколько тестов. Каждый тест задаётся строкой из двух целых чисел G и L, разделённых пробелом. Признаком конца ввода является строка, содержащая G = L = 0.

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

Для каждого теста выведите строку в следующем формате: Case c: N, где с — номер теста, а N — ответ на вопрос задачи.

Примеры
Входные данные
3 0
3 1
10 5
7 7
0 0
Выходные данные
Case 1: 3
Case 2: 6
Case 3: 847
Case 4: 127
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
16 megabytes

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

Цель игры — убрать карты в таком порядке, чтобы минимизировать общее количество набранных очков.

Например, если карты содержат числа 10, 1, 50, 20 и 5, игрок может взять карту с числом 1, затем 20 и 50, получая очки 10·1·50 + 50·20·5 + 10·50·5 = 500 + 5000 + 2500 = 8000. Если бы он взял карты в обратном порядке, то есть 50, затем 20, затем 1, количество очков было бы таким: 1·50·20 + 1·20·5 + 10·1·5 = 1000 + 100 + 50 = 1150.

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

В первой строке файла находится число карт N, во второй — разделённые пробелами N чисел на картах. Ограничения: 3 ≤ N ≤ 100, числа на картах целые от 1 до 100.

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

Вывести одно целое число — минимально возможное число очков.

Примеры
Входные данные
6
10 1 50 50 20 5
Выходные данные
3650
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
4 megabytes

(Задача отличается от предыдущых исключительно ограничениями.)

Есть сообщение, записанное в алфавите из N символов. Известно, что 1-й, 2-й, ..., N -й символы алфавита использованы в сообщении f 1 , f 2 , ..., f N раз. Его необходимо набрать на M -клавишной клавиатуре, используя способ набора, аналогичный используемому в мобильных телефонах.

На телефоне, клавише 2 сопоставлены буквы abc, клавише 3 — def, и т.д. Для набора текста телефон переводится в специальный режим, в котором одно нажатие на клавишу 2 порождает символ a, 2 подряд нажатия на 2 символ b, 3 подряд символ c; аналогично, одно нажатие 3 порождает d, 2 подряд e и т. д. Если же необходимо набрать 2 подряд буквы a, то нажимают клавишу 2, немного ждут и снова нажимают клавишу 2.

В нашем случае, символы с 1-ого по некоторый K 1 -ый должны соответствовать 1-ой клавише, с ( K 1 + 1) -ого по некоторый K 2 -ой — 2-ой клавише и т. д., до K M = N . Конкретные значения K 1 , K 2 , ..., K M - 1 не задаются — их, наоборот, нужно подобрать.

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

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

В первой строке содержатся два числа N и M , во второй — N чисел f 1 , f 2 , ..., f N — количества вхождений соответствующего символа. Числа внутри строк разделены одинарными пробелами. 2 ≤ M ≤ 1500 , 3 ≤ N ≤ 2000 , M < N , 1 ≤ f i ≤ 1000 .

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

Необходимо вывести единственное число — найденное минимальное количество нажатий на клавиши.

Примечание

Значение 21 достигается при K 1 = 2 , K 2 = 3 (1-й и 2-й символы сопоставить 1-й клавише, 3-й символ 2-й клавише, 4-й и 5-й символы 3-й клавише). Тогда количество нажатий будет

(3 × 1 + 2 × 2) + (5 × 1) + (7 × 1 + 1 × 2) = 21 .

Примеры
Входные данные
5 3
3 2 5 7 1
Выходные данные
21
ограничение по времени на тест
0.25 second;
ограничение по памяти на тест
256 megabytes

(Задача отличается от предыдущых исключительно ограничениями.)

Есть сообщение, записанное в алфавите из N символов. Известно, что 1-й, 2-й, ..., N -й символы алфавита использованы в сообщении f 1 , f 2 , ..., f N раз. Его необходимо набрать на M -клавишной клавиатуре, используя способ набора, аналогичный используемому в мобильных телефонах.

На телефоне, клавише 2 сопоставлены буквы abc, клавише 3 — def, и т.д. Для набора текста телефон переводится в специальный режим, в котором одно нажатие на клавишу 2 порождает символ a, 2 подряд нажатия на 2 символ b, 3 подряд символ c; аналогично, одно нажатие 3 порождает d, 2 подряд e и т. д. Если же необходимо набрать 2 подряд буквы a, то нажимают клавишу 2, немного ждут и снова нажимают клавишу 2.

В нашем случае, символы с 1-ого по некоторый K 1 -ый должны соответствовать 1-ой клавише, с ( K 1 + 1) -ого по некоторый K 2 -ой — 2-ой клавише и т. д., до K M = N . Конкретные значения K 1 , K 2 , ..., K M - 1 не задаются — их, наоборот, нужно подобрать.

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

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

В первой строке содержатся два числа N и M , во второй — N чисел f 1 , f 2 , ..., f N — количества вхождений соответствующего символа. Числа внутри строк разделены одинарными пробелами. 2 ≤ M ≤ 1500 , 3 ≤ N ≤ 2000 , M < N , 1 ≤ f i ≤ 1000 .

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

Необходимо вывести единственное число — найденное минимальное количество нажатий на клавиши.

Примечание

Значение 21 достигается при K 1 = 2 , K 2 = 3 (1-й и 2-й символы сопоставить 1-й клавише, 3-й символ 2-й клавише, 4-й и 5-й символы 3-й клавише). Тогда количество нажатий будет

(3 × 1 + 2 × 2) + (5 × 1) + (7 × 1 + 1 × 2) = 21 .

Примеры
Входные данные
5 3
3 2 5 7 1
Выходные данные
21

Страница: << 31 32 33 34 35 36 37 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест