Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 9, 2026 09:58:45

Lanaya
Зарегистрирован: 2025-12-25
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понимаю в чем ошибка

Вот такое задание: Значение арифметического выражения 7**100 + 7**30 – х, где х – натуральное число,
меньшее, чем 720, записали в системе счисления с основанием 7 Определите наибольшее
количество нулей, которое может содержать семиричная запись значения данного
арифметического выражения.
Вот мой код:
for x in range(10000):
a=7**100+7**30-x
w=
while a>0:
w=+w
a=a//7
print(w.count(0))
Выдает ответ 70, хотя правильно 89, не понимаю в чем ошибка.

Офлайн

#2 Фев. 9, 2026 20:44:45

Alex.Pro.
От: Марик
Зарегистрирован: 2024-11-13
Сообщения: 97
Репутация: +  2  -
Профиль   Отправить e-mail  

Не понимаю в чем ошибка

Во-первых. Чтобы ваш код было легче читать, используйте квотирование! Не вставляйте код в сообщение как простой текст.

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

Офлайн

#3 Фев. 10, 2026 07:05:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Не понимаю в чем ошибка

Alex.Pro.
Мы получили 70 нулей и это предел для нашего условия. Чтобы получить больше нулей, требуется вычитать число, сравнимое с 7**30.
Если мы вычтем 49, то получится 72 нуля там.
1 0 0 ... 0 0 1 0 0 ... 0 0 - 100 = 1 0 0 ... 0 0 0 6 6 ... 6 6 0 0
Похоже, надо переборный код написать.



Офлайн

#4 Фев. 10, 2026 19:23:41

Alex.Pro.
От: Марик
Зарегистрирован: 2024-11-13
Сообщения: 97
Репутация: +  2  -
Профиль   Отправить e-mail  

Не понимаю в чем ошибка

py.user.next
Если мы вычтем 49, то получится 72 нуля
Упс. Изначально я неправильно понял условие. Мне показалось что требуется определить наибольшее непрерывное количество последовательных нулей. Если убрать требование непрерывности последовательных нулей, тогда максимальное кол-во нулей получится в результате вычисления 7**100+7**30-7**3. Всего 73 нуля: единица, 70 нулей, 27 шестёрок и ещё 3 нуля. Обнулить больше цифр (в более старших разрядах) мы не можем по условию.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version