V .
Ученик
(158)
4 недели назад
В данном задании нужно реализовать алгоритм, который строит новое число \( R \) по следующим правилам:
1. Если исходное число \( N \) кратно 2, оно делится на 2, иначе из него вычитается 1.
2. Если полученное на предыдущем шаге число кратно 3, оно делится на 3, иначе из него вычитается 1.
3. Если полученное на предыдущем шаге число кратно 7, оно делится на 7, иначе из него вычитается 1.
4. Число, полученное на шаге 3, является результатом работы алгоритма.
Нужно посчитать, сколько натуральных чисел \( N > 1 \) дают результат \( R = 2 \).
Напишем код на Python для выполнения этого алгоритма:
```python
count = 0
for N in range(2, 100000): # Начинаем с 2, так как N > 1
x = N
# Шаг 1
if x % 2 == 0:
x //= 2
else:
x -= 1
# Шаг 2
if x % 3 == 0:
x //= 3
else:
x -= 1
# Шаг 3
if x % 7 == 0:
x //= 7
else:
x -= 1
# Проверяем, равен ли результат 2
if x == 2:
count += 1
print(count)
```
Этот код перебирает все значения \( N \) от 2 до 99,999 и применяет к каждому из них описанный алгоритм. Если результат равен 2, счетчик увеличивается на 1. В конце выводится количество таких чисел.
ans = 0
for N in range(1,100000):
R = ''
x = N
while (x>0):
R = str(x%5) + R
x = x//5
R = str(N%2) + R + str(N%3)
m = int(R, 5)
if (10<=m and m<100):
ans = max(ans, m)
print(ans)