Подскажите, в чём ошибка?
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1000; 9999], запись которых в пятеричной системе имеет не менее 6 цифр и заканчивается на 21 или 23. Найдите количество таких чисел и минимальное из них. Правильный ответ: 550 3136. Подскажите, в чём ошибка? Нужно делать только с помощью циклов, функции нельзя. Попробовал сделать, получилось вот что:
s = 0
c = 0
for i in range(1000, 10000):
n = i
if i % 5 == 1 or i % 5 == 3:
if (i // 5) % 5 == 2:
while i != 0:
i = i // 5
s += 1
if s >= 6:
c += 1
if c == 1:
n1 = n
print(c, n1)
719 1013
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
Вы не обнуляете значение переменной s
s = 0
c = 0
for i in range(1000, 10000):
n = i
if i % 5 == 1 or i % 5 == 3:
if (i // 5) % 5 == 2:
s = 0
while i != 0:
i = i // 5
s += 1
if s >= 6:
c += 1
if c == 1:
n1 = n
print(c, n1)
также можно немного уменьшить код:
c = 0
for i in range(5**5, 10000):
if i % 25 == 11 or i % 25 == 13:
c += 1
if c == 1:
n1 = i
print(c, n1)
Автор решения: GrAnd
→ Ссылка
Для решения данной задачи и циклы то не нужны...
limit = 9999
min6digits = 1*5*5*5*5*5 #int("100000", 5)
min21 = min6digits + 2*5 + 1 #int("100021", 5)
min23 = min6digits + 2*5 + 3 #int("100023", 5)
count21 = (limit-min21) // (5*5) + 1
count23 = (limit-min23) // (5*5) + 1
print(count21+count23, min21)