Форум » Кодирование и декодирование информации » №6861. Ответ не сходится » Ответить

№6861. Ответ не сходится

ИВ12: Например, возьмем число 2025 в 10-ричной системе счисления тогда в 45-ричной оно имеет вид: 100 цифры 1 и 0 стоят на нечетных позициях, их сумма 1 цифры 0 стоит на четной позиции, сумма 0 0<1 записываем число 01(ноль в начале игнорируется, поэтому получаем просто число 1) 1 в 45-ричной системе счисления равна 1 в 10-ричной системе счисления таким образом, минимальное число, получаемое в результате работы алгоритма: 1 ответ с сайта: 46598 Так же стоит уточнить, что пример, представленный в задании, неверный. по заданию, сумма на четных местах 5, на нечетных 2 тогда у нас должно получиться число 25 в 45-ричной сс, а получается 2255 в 45-ричной, хотя такого пункта в алгоритме не указано [pre2] def f(n,c): #переводит из 10ричной в 45ричную m='' while n>0: m=str(n%c)+m n=n//c return m def p(r): #перевод из 45ричной в 10ричную a=list(map(int,str(r))) a=a[::-1] k=[ ] for i in range(len(a)): h=a[ i ]*(45**i) k.append(h) return(sum(k)) chisla=[ ] for n0 in range(1000+1,100000): n=n0 n=f(n,45) #перевод в 45 ричную сс n=list(map(int,str(n))) chet=[ ] nechet=[ ] for i in range(len(n)): #нумерование цифр числа if i%2!=0: chet.append(n[ i ]) else: nechet.append(n[ i ]) k1=(min(sum(chet),sum(nechet))) #минимальная из сумм k2=(max(sum(chet),sum(nechet))) #максимальная из сумм r=str(k1)+ str(k2) #слепление их в одно число r=int(r) r10=p(r) #перевод его в 10ричную сс chisla.append(r10) chisla=sorted(chisla) print(min(chisla)) [/pre2]

Ответов - 1

Ж: Вот код, который решает эту задачу [pre2] g=lambda s: g(s[1::])+s[0]*45**(len(s)-1) if s else 0 f=lambda n: f(n//45)+' '+str(n%45) if n>0 else '' l=[] for n in range(1001,2000): s=[int(c) for c in f(n).split(' ')[1::]] s1=sum(g([c]) for c in s[::2]) s2 = sum(g([c]) for c in s[1::2]) s=[min(s1,s2)]+s+[max(s1,s2)] l.append(g(s)) print(min(l)) [/pre2] Возможно, вы неверно поняли условие: Например, возьмем число 2025 в 10-ричной системе счисления тогда в 45-ричной оно имеет вид: 100 цифры 1 и 0 стоят на нечетных позициях, их сумма 1 цифры 0 стоит на четной позиции, сумма 0 0<1 записываем число 01(ноль в начале игнорируется, поэтому получаем просто число 1) 1 в 45-ричной системе счисления равна 1 в 10-ричной системе счисления таким образом, минимальное число, получаемое в результате работы алгоритма: 1 Приписываем слева к вашему 100 0 , а справа 1 получаем 01001, 0 спереди игнгорируем, переводим в 10 сс, получаем 91125



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