Есть ответ 👍

Перевести 1ав из шестнадцатиричной в восьмеричную

148
244
Посмотреть ответы 2

Ответы на вопрос:


Поскольку и 16 и 8 являются целыми степенями двойки, можно воспользоваться двоичной системой, как промежуточной при переходе между системами по основаниям 16 и 8. заменяем каждую шестнадцатиричную цифру четырьмя двоичными (тетрадой), а затем группируем в порядке справа налево двоичные цифры по три, образуя триады. каждую триаду заменяем восьмеричной цифрой. простой перевод, не требующий никаких арифметических действий. 1ab(16) = 0001 1010 1011(2) = 110101011 = 110 101 011 = 653(8)
frossbaf
4,7(3 оценок)

В этой задаче непонятно, могут ли числа быть отрицательными.

Предположим, что нет, т.к. указано только ограничение сверху (числа меньше или равны 10000).

Могу предложить такой алгоритм:

1. Считаем данные в массив (назовем его original).

2. Создадим еще один массив (пока заполненный нулями) на 10001 элемент (учитываем 0). Его назовем counter.

3. Будем идти по массиву original, брать каждое число и прибавлять 1 в соответствующую ячейку counter, номер которой равен текущему числу.

Пример:

Пусть в нулевой ячейке массива original лежит число 100. Тогда прибавляем 1 к значению сотой ячейки counter. В следующей ячейке original пусть лежит 135. Тогда идем в 135-ую ячейку массива counter и прибавляем 1.

4. В итоге мы будем знать, сколько каких дано элементов.

5. Надо найти у какого значения не хватает пары. "Не хватает пары" в данном случае будет означать, что в соответствующей ячейке counter будет лежать нечетное число (если числа не могут повторяться, то это будет число 1, а в остальных ячейках 2; но мы не можем быть уверены, что числа не повторяются, поэтому решим в более общем виде).

6. Поэтому пройдемся по массиву

counter, проверяя каждую ячейку на четность. Только встречаем нечетную ячейку, сразу выводим ее номер и прекращаем выполнение программы (она такая одна).

Если все-таки там могут быть отрицательные числа (а ограничение по модулю), то надо просто ввести еще один массив negative_counter (10001 ячейка). Ноль в нем надо игнорировать (уже подсчитывается в обычном counter вместе с положительными числами), а при проходе массива original делать сначала проверку на положительное/отрицательное значение и при обращении к номеру ячейки negative_counter через значение текущей ячейки original не забывать ставить минус или модуль (будет что-то вроде negative_counter[-original[i]] += 1 или negative_counter[abs(original[i])] += 1). Потом пройти два массива (по очереди) с проверкой на четность. При выводе тоже не забыть про минус, если без пары окажется отрицательное число.

Плюсы алгоритма: он линейный.

Минусы: создаем лишний массив, т.е. используем лишнюю память.

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

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

Подпишись на наш телеграмм канал

GTP TOP NEWS