Дано натуральное число N. Необходимо представить его в виде суммы точных кубов, содержащей наименьшее число слагаемых. Программа должна вывести это число слагаемых.
Программа получает на вход натуральное число N, не превосходящее 106.
Программа должна вывести единственное натуральное число.
Ввод | Вывод |
---|---|
33 |
5 |
Примечание. 33=23+23+23+23+13.
В некотором государстве в обращении находятся банкноты определенных номиналов. Национальный банк хочет, чтобы банкомат выдавал любую запрошенную сумму при помощи минимального числа банкнот, считая, что запас банкнот каж дого номинала неограничен. Помогите Национальному банку решить эту задачу.
Первая строка входных данных содержит натуральное число N не превосходящее 100 — количество номиналов банкнот в обращении. Вторая строка входных данных содержит N различных натуральных чисел x1, x2, ..., xN, не превосходящих 106 — номиналы банкнот. Третья строчка содержит натуральное число S, не превосходящее 106 —сумму, которую необходимо выдать.
Программа должна найти представление числа S виде
суммы слагаемых из множества xi, содержащее минимальное
число слагаемых и вывести это представление на экран (в виде
последовательности чисел, разделенных пробелами).
Если таких представлений существует несколько, то программа должна
вывести любое (одно) из них. Если такое представление не
существует, то программа должна вывести строку No solution
.
Ввод | Вывод |
---|---|
5 |
1 7 32 |
5 |
No solution |
Даны N золотых слитков известных масс. Определите, какую наибольшую массу золота можно унести, если вместимость рюкзака не превышает S.
Программа получает на вход целое число S — вместимость рюкзака, не превосходящее 10000 и количество слитков N, не превосходящее 300. Далее следует N целых неотрицательных чисел, не превосходящих 100000 — веса слитков.
Программа должна вывести единственное целое число — максимально возможных вес золота, который поместится в данный рюкзак.
Ввод | Вывод |
---|---|
10 3 |
9 |
Дано N предметов массой m1, …, mN и стоимостью c1, …, cN соответственно.
Ими наполняют рюкзак, который выдерживает вес не более M. Какую наибольшую стоимость могут иметь предметы в рюкзаке?
В первой строке вводится натуральное число N, не превышающее 100 и натуральное число M, не превышающее 10000.
Во второй строке вводятся N натуральных чисел mi, не превышающих 100.
Во третьей строке вводятся N натуральных чисел сi, не превышающих 100.
Выведите наибольшую возможную стоимость рюкзака.
Ввод | Вывод |
---|---|
4 6 |
13 |
Решите предыдущую задачу при условии, что необходимо вывести номера предметов (числа от 1 до N), которые войдут в рюкзак наибольшего веса.
Ввод | Вывод |
---|---|
4 6 |
1 3 4 |
Дано N предметов массой m1, …, mN. Ими наполняют рюкзак, который выдерживает вес не более M. Как набрать вес в точности M, используя как можно меньше предметов?
Первая строка входных данных содержит натуральное число N, не превышающее 100 и натуральное число M, не превышающее 10000.
Во второе строке находится N натуральных чисел mi, не превышающих 100.
Выведите наименьшее необходимое число предметов или 0, если набрать данный вес невозможно.
Ввод | Вывод |
---|---|
4 6 |
2 |
Дан набор гирек массой m1, …, mN. Можно ли их разложить на две чаши весов, чтобы они оказались в равновесии?
Первая строка входных данных содержит натуральное число N, не превышающее 100. Далее идет N натуральных чисел mi, не превышающих 100.
Программа должна вывести YES, если гирьки можно разложить на две кучки равной массы или NO в противном случае.
Ввод | Вывод |
---|---|
4 |
YES |
Дан набор гирек, как в предыдущей задаче. Разделите эти гирьки на две кучки равной массы, содержащие равное число гирек.
Формат входных данных аналогичен предыдущей задаче.
Необходимо вывести в первой строчке номера
гирек (числа от 1 до N), входящие в первую кучку, во второй строчке —
номера гирек во второй кучке. Если задача не имеет решения, выведите строку
No solution
.
Ввод | Вывод |
---|---|
4 |
1 4 |
Дан набор гирек. Разделите его на три кучки равной масссы.
Формат входных данных аналогичен предыдущей задачи. Количество гирек N и массы гирек mi не превосходят 60.
Программа должна вывести номера гирек для каждого из наборов в три строки
или строчку No solution
, если решения не существует.
Ввод | Вывод |
---|---|
5 |
1 4 |
Дан набор гирек. Разделите его на четыре кучки равной масссы.
Формат входных данных аналогичен предыдущей задачи. Количество гирек N не превосходит 14, массы гирек mi не превосходят 100.
Программа должна вывести номера гирек для каждого из наборов в четыре строки
или строчку No solution
, если решения не существует.
Ввод | Вывод |
---|---|
8 |
1 8 |
Дан набор гирек. Разделите его на три кучки равной масссы, содержащие равное число гирек.
Формат входных данных аналогичен предыдущей задачи. Количество гирек N не превосходит 18, массы гирек mi не превосходят 100.
Программа должна вывести номера гирек для каждого из наборов в три строки
или строчку No solution
, если решения не существует.
Ввод | Вывод |
---|---|
6 |
1 6 |
По случаю введения больших новогодних каникул устраивается великий праздничный бал-маскарад. До праздника остались считанные дни, поэтому срочно нужны костюмы для участников. Для пошивки костюмов требуется L метров ткани. Ткань продается в N магазинах, в которых предоставляются скидки оптовым покупателям. В магазинах можно купить только целое число метров ткани. Реклама магазина номер i гласит “Мы с радостью продадим Вам метр ткани за Pi бурлей, однако если Вы купите не менее Ri метров, то получите прекрасную скидку — каждый купленный метр обойдется Вам всего в Qi бурлей”. Чтобы воплотить в жизнь лозунг “экономика страны должна быть экономной”, правительство решило потратить на закупку ткани для костюмов минимальное количество бурлей из государственной казны. При этом ткани можно купить больше, чем нужно, если так окажется дешевле. Ответственный за покупку ткани позвонил в каждый магазин и узнал, что:
1) реклама каждого магазина содержит правдивую информацию о ценах и скидках;
2) магазин номер i готов продать ему не более Fi метров ткани.
Ответственный за покупку очень устал от проделанной работы и поэтому поставленную перед ним задачу “закупить ткань за минимальные деньги” переложил на своих помощников. Напишите программу, которая определит, сколько ткани нужно купить в каждом из магазинов так, чтобы суммарные затраты были минимальны.
В первой строке входного файла записаны два целых числа N и L (1≤N≤100, 0≤L≤100). В каждой из последующих N строк находится описание магазина номер i — 4 целых числа Pi, Ri, Qi, Fi (1≤Qi≤Pi≤1000, 1≤Ri≤100, 0≤Fi≤100).
Первая строка выходного файла должна содержать единственное число — минимальное необходимое количество бурлей.
Во второй строке выведите N чисел, разделенных пробелами, где i-е число определяет количество метров ткани, которое нужно купить в i-м магазине. Если в i-м магазине ткань покупаться не будет, то на i-м месте должно стоять число 0. Если вариантов покупки несколько, выведите любой из них.
Если ткани в магазинах недостаточно для пошивки костюмов, выходной файл должен содержать единственное число -1.
Ввод | Вывод |
---|---|
2 14 |
88 |
1 20 |
-1 |
Покупатель хочет приобрести товар стоимостью \(S\) рублей. У него есть \(N\) банкнот номиналом \(P_1\), \(P_2\), ..., \(P_N\) рублей. У продавца есть \(M\) банкнот номиналом \(Q_1\), \(Q_2\), ..., \(Q_M\) рублей. Определите, смогут ли они рассчитаться.
Программа получает на вход сумму \(S\). Далее идет число \(N\), затем \(P_1\), \(P_2\), ..., \(P_N\). Далее идет число \(M\), затем \(Q_1\), \(Q_2\), ..., \(Q_M\). Количество банкнот у продавца и покупателя и их номиналы не превосходят 100.
Если продавец сможет рассчитаться с покупателем, выведите номиналы банкнот, которые покупатель отдает продавци и которые он получает в качестве сдачи. Выводите число со знаком “+”, если банкноту соответствующего номината покупатель отдает продавцу и со знаком “-”, если покупатель получает эту банкноту на сдаду. Номиналы банкнот разделяйте пробелом.
Если они не могут рассчитаться, выведите строку Impossible
.
Ввод | Вывод |
---|---|
10 |
-2 +9 +3 |
100 |
Impossible |
Покупатель хочет приобрести товар стоимостью \(S\) рублей. У него есть \(N\) банкнот номиналом \(P_1\), \(P_2\), ..., \(P_N\) рублей. У продавца есть \(M\) банкнот номиналом \(Q_1\), \(Q_2\), ..., \(Q_M\) рублей. Определите, какое наименьшее число банкнот придется отдать продавцу на сдачу, чтобы они могли в точности рассчитаться.
Программа получает на вход сумму \(S\). Далее идет число \(N\), затем \(P_1\), \(P_2\), ..., \(P_N\). Далее идет число \(M\), затем \(Q_1\), \(Q_2\), ..., \(Q_M\). Количество банкнот у продавца и покупателя и их номиналы не превосходят 100.
Если продавец сможет рассчитаться с покупателем, выведите наименьшее количество банкнот, которое придется отдать продавцу на сдачу.
Если они не могут рассчитаться, выведите число -1.
Ввод | Вывод |
---|---|
10 |
1 |
100 |
-1 |