Форум » Выполнение и анализ алгоритмов для исполнителей » задача 6885 » Ответить

задача 6885

мезуми: правильный ответ: 703 мой ответ: 3376 моё решение: def f(x): s='' while x>0: s+=str(x%15) x=x//15 return s[::-1] a=[] for n in range(15, 1000): s=str(f(n)) if n%15==0: s+=str(s[0:2]) else: k=(n%15)*13 s+=f(k) R=int(s, 15) if R>700: a.append(R) print(min(a)) где ошибка? т-т

Ответов - 2

t.potapkova: Ошибка в строке 3: вы присоединяете цифру к числу справа s+=str(x%15), а надо слева: s= str(x%15)+s. Но ответ будет все равно не 703

Ж: Ответ верен. Ваш перевод в 15 сс работает некорректно, так как остатки при делении на 15 могут быть двузначными, поэтому они заменяются буквами abcde. используйте такой код для перевода в любые сс до 36 (просто увеличивая алфавит) [pre2] al='0123456789abcde' f=lambda n: f(n//15)+al[n%15] if n>0 else '' [/pre2] [pre2] al='0123456789abcde' f=lambda n: f(n//15)+al[n%15] if n>0 else '' a=[] for n in range(15, 1000): s=str(f(n)) if n%15==0: s+=str(s[0:2]) else: k=(n%15)*13 s+=f(k) R=int(s, 15) if R>700: a.append(R) print(min(a)) [/pre2]



полная версия страницы