Радмир АсхадуллинМастер (1458)
1 месяц назад
m = []
for n in range(11, 10000):
z = ''
n1 = n
k1 = 0
k2 = 0
while n1 > 0:
a = n1 % 3
n1 = n1 // 3
z = str(a) + z
if a % 2 == 0:
k1 += 1
else:
k2 += 1
if k1 > k2:
z = "22" + z
else:
z = "11" + z
r = int(z, 3)
if r > 100:
m.append(r)
print(min(m))
1. Строится троичная запись числа N.
2. К этой записи дописываются разряды по следующему правилу. Если количество четных цифр в полученной записи больше чем нечетных, слева дописывается 22, иначе 11.
3. Полученная таким образом запись является троичной записью искомого числа R.
Например, для числа 18 троичная запись 2003 преобразуется в запись 222003 = 234, для числа 22 троичная запись 2113 преобразуется в 112113 = 130.
Укажите минимальное значение R, больше чем 100, которое может получится в результате работы алгоритма. В ответе запишите это число в десятичной системе счисления.
Ответ:120
моё решение:
def f(n):
s=''
while n:
s+=str(n%3)
n//=3
return s[::-1]
for n in range(11,1000):
n3=f(n)
if n3.count('0')+n3.count('2')>n3.count('1'):
n3='22'+n3
else:
n3='11'+n3
r=int(n3,3)
if r>100:
print(r)
break
ответ:227
помогите найти ошибку!