Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

ПОМОГИТЕ С ЗАДАЧЕЙ ПО ИНФОРМАТИКЕ

Кристина Смирнова Ученик (108), на голосовании 1 неделю назад
344)Алгоритм получает на вход натуральное число N > 10 и строит по нему новое число R следующим образом:
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

помогите найти ошибку!
Голосование за лучший ответ
Радмир Асхадуллин Мастер (1458) 1 месяц назад
не смотрел код, но я тоже решал эту задачу и получил такой код
Радмир АсхадуллинМастер (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))
Марина Романова Ученик (104) 3 недели назад
в этих задачах номер 5, когда ищешь R нужно создавать список
потому что когда n, то они у нас идут по возрастанию, а R в разброс
Похожие вопросы