Сегодня увидел задачку ответ на которую прям вот вообще не гуглится, вот постое условие:
(int) (A + B) == 123; Число А задано, вернуть такое число В, что б удовлетворяло этому условию, но В должно быть неотрицательно.
В случае, если А <= 123, всё просто, а если больше, то нужно вернуть хитрый лонг, значение которого лежит за пределами int так что бы при приведении типов ответ был 123. Проясните, если кто знает, как придумать такой лонг
phisikist
41 уровень
Вопрос по задаче не с JR
Решен
Комментарии (11)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергеев ВикторMaster
13 марта 2018, 16:40
4294967419
Из него вычитайте A и получите B
0
phisikist Middle Java Engineer
13 марта 2018, 18:35
а можно немножко объяснения?)
0
Сергеев ВикторMaster
13 марта 2018, 18:48решение
пока попробуйте додумать сами, посмотрите как число выглядит в двоичном виде
+2
Аслан Backend Developer в Mail.ru Group Expert
13 марта 2018, 19:07
0
phisikist Middle Java Engineer
13 марта 2018, 19:11
Пока писал вопрос дошло)
Но, с таким решением есть проблемы при значениях а = минимальному инту, а то вновь В отрицательное получается
0
phisikist Middle Java Engineer
13 марта 2018, 19:12
Спасибо, к этому уже додумался, но при тесте оказалась проблема с таким подходом)
0
Сергеев ВикторMaster
13 марта 2018, 19:16
У чем проблема?
Если А == Integer.MIN_VALUE
Тогда:
В = 4294967419 - А = 4294967419 - (-2147483648) = 6442451067
-2147483648 + 6442451067 = 4294967419
0
Аслан Backend Developer в Mail.ru Group Expert
13 марта 2018, 19:38
0
phisikist Middle Java Engineer
13 марта 2018, 19:48
это я уже что то намутил, а то смотрел на вывод только, но видать выше у меня было что то не то, спасибо)
0
Стас Пасинков Software Developer в Zipy Master
14 марта 2018, 00:59
а где задачку эту нашли, если не секрет?)
0
phisikist Middle Java Engineer
14 марта 2018, 12:00
www.codewars.com
0