Привет, ошибка ValueError: invalid literal for int() with base 3: '' происходит из-за попытки преобразования пустой строки в целое число с основанием 3. Ваша функция m(n) возвращает пустую строку, когда n равно 0. Давайте внесем изменения в ваш код, чтобы избежать этой ошибки:
def m(n):
if n == 0:
return '0'
t = ''
while n > 0:
d = str(n % 2)
t = d + t
n = n // 3
return t
for n in range(10000):
n3 = m(n)
if n % 3 == 0:
r3 = n3[-2:] + n3 + n3[-2:]
else:
r3 = m((n % 3) * 2) + n3
if r3: # Проверка на пустую строку
r = int(r3, 3)
if r > 1000:
print(n)
break
Добавлена проверка if r3, чтобы избежать преобразования пустой строки в целое число. Если помогло, с вас лайк).
Код прилагаю:
def m(n):
t=''
while n>0:
d=str(n%2)
t=d+t
n=n//3
return t
for n in range (10000):
n3=m(n)
if n%3==0:
r3=n3[-2:]+n3+n3[-2:]
else:
r3=m((n%3)*2)+n3
r=int(r3, 3)
if r>1000:
print(n)
break