Учитель

adislan

Новичок
Пользователь
Окт 21, 2020
20
0
1
Когда Учитель достиг просветления, он понял, что должен раздать свои богатства, причём сделать это следующим образом: в первый день разделить все свои золотые монеты на 8 равных частей (счастливое число!), излишки (если таковые будут иметься) пожертвовать храму Будды, оставить себе одну восьмую часть, остальные раздать бедным.
Во второй день вновь разделить оставшиеся монеты на 8 частей и повторить вышеуказанные манипуляции. И продолжать так до тех пор, пока у него не останется так мало монет, что при делении их на 8 равных частей они все окажутся излишком.
Оставшиеся монеты можно оставить себе. Кроме того, Учитель не тратит свои деньги (во всяком случае, в дни после просветления): его кормят ученики, а в быту он аскетичен.
Хотя Учитель знает, конечно, сколько у него золотых монет изначально, но он не может сообразить, сколько монет окажется в конце — всё-таки он Учитель духовных практик, а не математики или программирования. Помогите ему.
Иными словами, найдите первую цифру введённого числа при записи его в системе счисления с основанием 8.
Формат ввода
Одно целое число — изначальное количество монет у Учителя.
Формат вывода
Одно целое число — количество монет, которое останется у Учителя в конце


вот мой код

money = int(input())
while money > 8:
money //= 8
print(money % 8)

на маленьких числах работает без ошибок(как минимум не замечал)
а на числах больших начинаются ошибки
ПРИМЕР:
ввод :
280185
должен быть вывод : 1
а моя программа выдает : 0
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
Python:
money = int(input())
new_money = ''

while money > 0:
    new_money = str(money % 8) + new_money
    money //= 8

print(new_money[0])
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Иными словами, найдите первую цифру введённого числа при записи его в системе счисления с основанием 8.
oct(money)[2:3]
 

Форум IT Специалистов