Когда учитель достиг просветления, он понял, что должен раздать свои богатства, причём сделать это следующим образом: в первый день разделить все свои золотые монеты на 8 равных частей (счастливое излишки (если таковые будут иметься) пожертвовать храму будды, оставить себе одну восьмую часть, остальные раздать бедным.

во второй день вновь разделить оставшиеся монеты на 8 частей и повторить вышеуказанные манипуляции. и продолжать так до тех пор, пока у него не останется так мало монет, что при делении их на 8 равных частей они все окажутся излишком.

оставшиеся монеты можно оставить себе. кроме того, учитель не тратит свои деньги (во всяком случае, в дни после просветления): его кормят ученики, а в быту он аскетичен.

хотя учитель знает, конечно, сколько у него золотых монет изначально, но он не может сообразить, сколько монет окажется в конце — всё-таки он учитель духовных практик, а не или программирования. ему.

иными словами, найдите первую цифру введённого числа при записи его в системе счисления с основанием 8.

формат ввода

одно целое число — изначальное количество монет у учителя.

формат вывода

одно целое число — количество монет, которое останется у учителя в конце.

пример

ввод

129

вывод

2

ivandawidov ivandawidov    3   16.10.2019 16:19    231

Ответы
pollyshtal33333333 pollyshtal33333333  10.10.2020 07:16

n = int(input())

while n % 8 != n:

   n //= 8

print(n)

Хоть и   это маловато за задачу на знание языка программирования, но этот код работает.

ПОКАЗАТЬ ОТВЕТЫ
АнгелТих АнгелТих  11.01.2024 18:20
Добрый день, ученик! Давай разберемся с этой задачей по порядку.

В задаче описывается процесс, в котором учитель раздает свои золотые монеты бедным, следуя определенным правилам. При этом, задача заключается в том, чтобы найти первую цифру исходного числа, когда оно записывается в системе счисления с основанием 8.

Давайте представим, что изначально у учителя было x монет. Согласно условию задачи, в первый день учитель разделяет все свои монеты на 8 равных частей, то есть каждая часть составляет x / 8 монет. Затем он пожертвовует излишки (если они будут) храму будды, оставит себе одну восьмую часть, а остальные раздаст бедным.

Теперь у учителя остается x - (x / 8) - (x / 8) = x - (2 * (x / 8)) монет.

Во второй день, он снова разделит оставшиеся монеты на 8 равных частей, каждая составит (x - (2 * (x / 8))) / 8 монет. После разделения он снова пожертвует излишки (если они будут), оставит себе одну восьмую часть и остальное раздаст бедным. Таким образом, после второго дня у учителя останется

x - (2 * (x / 8)) - (x - (2 * (x / 8))) / 8 - (x - (2 * (x / 8))) / 8.

И так далее, процесс будет повторяться, пока у учителя не останется так мало монет, что при делении их на 8 равных частей, все окажутся излишком.

В задаче требуется найти первую цифру исходного числа после всех этих операций. Для этого нам нужно записать число в системе счисления с основанием 8 и выделить первую цифру.

Для примера, предположим, что изначально у учителя было 129 монет. Тогда поступим следующим образом:

1. Разделим исходное число на 8:

129 / 8 = 16 (остаток 1)

Таким образом, в первой позиции записи в восьмеричной системе счисления у нас будет цифра 1.

2. Повторим операцию с оставшимся числом:

16 / 8 = 2 (остаток 0)

Таким образом, во второй позиции записи в восьмеричной системе счисления у нас будет цифра 0.

Таким образом, первая цифра исходного числа 129 после всех операций будет 2.

Вернемся к задаче в целом. Теперь, чтобы найти первую цифру числа при записи его в системе счисления с основанием 8, мы можем использовать цикл, который будет выполнять деление числа на 8, пока результат деления не станет меньше 8. В каждой итерации мы будем записывать остаток от деления в массив, и в конце возьмем первый элемент массива как искомую цифру.

Вот пример программы на языке Python, которая решает данную задачу:

```python
number = int(input()) # Вводим исходное число

digits = [] # Массив для хранения остатков от деления

while number >= 8: # Пока число больше или равно 8
remainder = number % 8 # Находим остаток от деления
digits.append(remainder) # Добавляем остаток в массив
number = number // 8 # Делаем целочисленное деление для получения следующего числа

digits.append(number) # Добавляем последнее число в массив

first_digit = digits[-1] # Берем первый элемент массива

print(first_digit) # Выводим первую цифру
```

Надеюсь, я подробно и понятно объяснил решение данной задачи. Если у тебя возникнут вопросы, не стесняйся задавать!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика