Получи заданное число

  • 18
  • Недоступна
Реализуй метод createExpression(int number). Метод createExpression вызывается с одним параметром number. Этот параметр - число от 1 до 3000 включительно. Нужно вывести арифметическое выражение, результатом которого является число number. Можно использовать числа: 1, 3, 9, 27, 81, 243, 729, 2187 не
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (133)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
VitalyK #1116124 31 уровень, Рига
20 февраля, 09:13
я думаю что из-за условия многие не поймут что делать, я б условия написал бы так 1. Разобраться с задачей Фибоначчи "О бедном торговце и его камнях" 2. Используя трехмерную систему исчисления решить это задачу.
tremb 31 уровень, Москва
11 февраля, 21:47
2332
Aleksandr 33 уровень
8 февраля, 09:49
Сначала задача показалась сложной и маловыполнимой для меня. Но посидел, почитал про то что советуют в задаче. Помогла эта статья , которую уже ранее скидывали. По ней собственно и придумался алгоритм. В решении использовал очередь, чтобы не извращаться с листом и индексами и в цикле после проверок сразу добавлял знак с элементом очереди "queue.poll()". Всё чаще убеждаюсь, что очереди и стек - офигенно полезные вещи в решении некоторых задач (через них когда-то решал и задачу с тегами)
Анатолий 32 уровень
5 февраля, 16:04
Осторожно: в условиях задачи, в требованиях дана неправильная последовательность. Если копируете в массив последовательность цифр из 2 пункта требований, не забудьте поменять местами 81 и 27 :) Добавил 11 строчек кода :) Алгоритм: Для положительных чисел. Делите число на 3. Если остаток от деления равен 0 или 1, то это 0 или + в симметричной троичной системе счисления. Если же остаток - двойка, то результат деления увеличиваете на единицу, а в соответствующий разряд пишете -. Например: 56(10) = 18[*3] + 2 = 19[*3] + "-" = 6[*3*3] + "+-" = 2[*3*3*3] + "0+-" = 1[*3*3*3*3] + "-0+-" = "+-0+-". Отсюда
Alukard Vampire hunter в The HellsingExpert
21 января, 21:18
Мне в этом всем очень сложно. Но в итоге разобрался и очень даже понравилось. Получилось такое лаконичное решение на 23 строчки.
Pig Man Главная свинья в Свинарнике
5 января, 10:35
Очень абстрактная фигня, хотя и простая, если читал тему про эти побитовые операторы сравнения
alex_us 41 уровень, Симферополь
29 декабря 2020, 09:18
2238.Пришлось полчаса покопаться в том что такое троичная система. И потом полчаса подгонять вывод под требуемый. Но уже реально мало остается)) интересно сколько народу прошло все 40 уровней
Alukard Vampire hunter в The HellsingExpert
21 января, 21:17
2277
Анатолий 32 уровень
5 февраля, 16:10
2313
Boarder QA Automation Engineer в ЛАНИТ
9 декабря 2020, 14:54
Пришлось посидеть, почитать, оказалось не всё так сложно) Помогли ссылки эта и эта
Mike Starman 39 уровень, Киев
24 ноября 2020, 13:47
Решил без рекурсивных переборов и прочей заумщины. Алгоритм на словах: 1. Создаем StringBuilder, в который запихиваем переданное число и " = ". 2. Заводим счетчик степени для числа 3 и присваиваем ему ноль. 3. Цикл do-while, по условию, пока число больше нуля. В цикле: 3.1. Вычисляем остаток от деления числа на 3, записываем в отдельную переменную. 3.2. Делим число нацело на 3, присваивая ему же. 3.3. Если остаток единица, то добавляем в стрингбилдер " + " и 3^счетчик. 3.4. Если остаток двойка, то добавляем в стрингбилдер " - " и 3^счетчик и увеличиваем число на 1 3.5. Увеличиваем счетчик степени на единицу. 4. Выводим результирующий StringBuilder в консоль и радуемся ;)
Alexey 32 уровень
5 ноября 2020, 15:06
Помогла эта ссылка https://qna.habr.com/q/378857 Картинка с алгоритмом для ленивых