Binary Bomb Phase 4 Assembly Intel x86-64 [дубликат]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

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

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
-2
задан GunR 9 October 2015 в 22:40
поделиться

1 ответ

Очевидно, что второе число должно быть равным нулю, так как это код проверяется на 0x08048d27.

Первое число должно быть выбрано так, чтобы возвращаемое значение func4 также равно нулю ( см. 0x08048d23). Если вы посмотрите в func4, вы увидите, что это двоичный поиск ( пояснения для аналогичного кода здесь). Когда элемент найден, он возвращает ноль. В противном случае, если он попадает в нижнюю половину, он возвращает 2*func4(). Наконец, если он находится в верхней половине, он возвращает 2*func4()+1.

Учитывая, что в этом случае результат должен быть равен нулю, это означает, что число должно быть найдено, только пересекая нижние диапазоны, так как иначе +1 будет ползти в результат. Ноль сам по себе является тривиальным решением, так как это, безусловно, будет найдено внизу.

Для полноты, это пошаговое руководство для других возможностей. Первая догадка будет средней точкой в ​​диапазоне [0, 14], которая равна 7. Для следующего шага мы знаем, что число должно быть меньше 7, чтобы получить диапазон [0, 6], а это означает середину 3. Аналогично, следующий диапазон - [0, 2] с серединой 1. Наконец, мы приходим к [0, 0], тривиальному результату.

TL; DR: Возможными входами являются 0 0, 1 0, 3 0 и 7 0.


Так как есть версии этого с другими ожидаемыми результатами, вот еще одна дополнительная помощь: Возвращаемое значение на самом деле говорит о низкоуровневых вариантах в двоичном формате, начиная с младшего значащего бита. В приведенном выше примере у нас были все 0 биты, поэтому все низкие варианты. Предположим, что мы имеем результат 4, который является 100 в двоичном. Чтение справа означает, что нам нужна нижняя, другая нижняя и конечная верхняя рекурсия. Следуя через диапазоны, они отображаются в [0, 6], [0, 2] и [2, 2]. Таким образом, в этом случае 2 будет решением.

3
ответ дан Community 19 August 2018 в 16:14
поделиться
  • 1
    Удивительно, огромное спасибо, что у меня было невероятно расстраивающее время с этим, ответ был 0 0. – GunR 9 October 2015 в 22:52
  • 2
    @GunR Другие 3 должны работать так же хорошо. – Jester 9 October 2015 в 23:08
Другие вопросы по тегам:

Похожие вопросы: