Как мне исправить код ,чтобы v увеличивалась только после того как каждый элемент из списка пройдет цикл(for f...) а не после каждой проверки элемента
я хочу найти кол-во систем счисления от 2 до 10, при которых число 1988 не будет иметь одинаковых цифр стоящих рядом, в этом коде v это как раз кол-во систем счисления которые подходят под условие
n = 0
v = 0
for i in range(2,11):
a = 1988
c = 0
d = []
while a > 0:
c += a%i
a = a // 2
d.append(int(c))
n+=1
for f in range(len(d)):
if d[f-1]==d[f]:
break
v+=1
print(v)
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
def check(num, base=10):
num, prev_digit = divmod(num, base)
while num > 0:
num, mod = divmod(num, base)
if mod == prev_digit:
return False
prev_digit = mod
return True
res = sum(check(1988, i) for i in range(2, 10))
результат:
In [109]: res
Out[109]: 3
PS здесь можно найти реализации функций для перевода чисел из одной системы счисления в другую.