Во-первых. Чтобы ваш код было легче читать, используйте квотирование! Не вставляйте код в сообщение как простой текст.
Lanaya
Выдает ответ 70, хотя правильно 89, не понимаю в чем ошибка.
А во-вторых… Почему вы считаете что правильно 89? Я согласен с вашей программой - семеричная запись результата вашего арифметического выражения будет содержать 70 нулей.
Об,ясняю. 7**100 - это единица с сотней нулей. 7**30 - это единица с тридцатью нулями. 7**100 + 7**30 (справа налево): тридцать нулей, единица, 69 нулей и опять единица. Чтобы последовательность нулей стала длиннее, мы что-то вычитаем (по условию, максимум 2046(7) = 720(10)). При этом единица в 30-ом разряде превращается в 0, а после неё появляется длинная цепочка шестёрок. Всё! Мы получили 70 нулей и это предел для нашего условия. Чтобы получить больше нулей, требуется вычитать число, сравнимое с 7**30.
Не ругайте сильно свой код. Я не понимаю как он работает, но результат получился правильный.