2013-07-05 2 views
-4

Как распределить 1000 $ в десяти ящиках, чтобы можно было указать любую сумму в размере от 1 до 1000 долларов США (оба включительно) в виде некоторых комбинаций этих полей.Алгоритмическая головоломка

Просьба указать любые подсказки о том, как подойти к этому. Я попытался, но не смог решить какое-либо решение.

+4

большой совет: полномочия 2 –

+3

Этот вопрос не соответствует теме, потому что речь идет не о программировании. –

+0

@Lior Kogan: так можете ли вы предоставить какие-либо ссылки, где я могу размещать такие вопросы? – user122345656

ответ

2

Напиши все числа от 1 до 1000 в представлении base-two. Эти цифры требуют десяти бит с 2^10 = 1024. Ваши боксы имеют две до 2^8 и 489 для последней коробки (2^0 - 2^8 и 489 - десять коробок и 2^0 + 2^1 + ... + 2^8 + 489 = 2^9 - 1 + 489 = 511 + 489 = 1000), а представления бит дают вам доказательства того, что вы можете написать любое число до 1000 в качестве комбинации эти ящики (очевидно, что-то до 511 в порядке, для чего-то большего, чем 511, вычесть 489, а затем обратите внимание, что вы можете записать остаток в виде комбинации из остальных 8 ящиков, так как гарантировано будет меньше или равно 511).

+0

Спасибо большое. Я буду работать над этим. – user122345656

3

Вы когда-нибудь делали двоичное преобразование в десятичное целое? Возьмите любое число от 1 до 1000 и попробуйте преобразовать его в двоичный. Вы выяснить, что вы имеете дело по степеням 2.

Распределить по степеням 2, а затем на любую сумму, вам нужно, просто превратить его в двоичную и выбрать те окна, для которых установлен бит 1.

+0

Что вы подразумеваете под «вы имеете дело с полномочиями 2»? Не могли бы вы немного разобраться? – Aravind

+0

Как вы преобразовываете десятичный знак в двоичный? У вас есть своего рода серия GP с общим соотношением = 2. Например, если вам нужно конвертировать 15 (допустим, количество), то у вас будет: ** ....., 16, 8, 4, 2, 1 ** что-то в этом роде и для 15, вам нужны последние четыре числа (8 + 4 + 2 + 1), означающие, что эти биты установлены в 1, дает вам 1111 как 15. Теперь, с точки зрения головоломки, поместите сумму в ящики в форме полномочия 2, а затем на 15, преобразовать его в двоичный, найти бит набора и выбрать ячейки для этих чисел. –

+0

Thanx для ваших ans я получил логику. – user122345656