Форум » Обработка числовых последовательностей » 27 2686 Ошибка в ответе » Ответить

27 2686 Ошибка в ответе

Ar3turrr: Верным ответом будет 6783 и 20191039. Ваш ответ: 6495 20191039 [pre2]def F(n, d): r = '' alf = 'ABCDEF' while n > 0: if n % d > 9: r = alf[ n % d - 10] + r else: r = str(n % d) + r n = n // d return r s = open('27-26b.txt') l = [ ] dif = [ ] SUM = 0 #создание списка for k in s: l.append(k.split()) #минимальная сумма без учёта условий for i in range(1, len(l)): SUM += min(int(l[ i][ 0]), int(l[ i][ 1])) #разности между числами for i in range(1, len(l)): if l[ i][ 0] != l[ i][ 1]: dif.append(abs(int(l[ i][ 0]) - int(l[ i][ 1]))) dif.sort() #заменяю числа в полученной сумме, подменяя пары чисел, пока не получу число в 16 системе с окончанием на F for i in dif: if F(SUM + i, 16)[ -1] == 'F': print(SUM + i) break[/pre2]

Ответов - 4

MercuL`: Решал сам, впрочем похожее решние получилось, однако ответы точно такие же. Сойдемся на том, что ошибка в ответах [pre2] file = open('27-26b.txt') n = int(file.readline()) differences = [] min_sum = 0 for i in range(n): a, b = map(int, file.readline().split()) differences.append(abs(a-b)) min_sum += min(a, b) differences.sort() new_sum = 0 print(hex(6783)) for i in differences: new_sum = min_sum + i if hex(new_sum)[-1] == 'f': print(new_sum) break [/pre2]

Aleksey6819: Ответ к задаче правильный. Вы рассматриваете только одно число (new_sum = min_sum + i), а на самом деле их несколько. Сумма минимального числа и нескольких разниц даст правильный ответ.

Ar3turrr: Aleksey6819 пишет: Сумма минимального числа и нескольких разниц даст правильный ответ. Вы правы. У меня получился ответ, спасибо! [pre2]def F(n, d): r = '' alf = 'ABCDEF' while n > 0: if n % d > 9: r = alf[ n % d - 10] + r else: r = str(n % d) + r n = n // d return r with open('27-26a.txt') as file: l = file.read().splitlines() SUM = 0 dif = [] n = [ ] for i in range(1, len(l)): a, b = map(int, l[ i].split()) dif.append(abs(a - b)) SUM += min(a, b) dif.sort() dif = set(dif) dif = list(dif) for i in range(len(dif) - 1): if F(SUM + dif[ i], 16)[ -1] == 'F': n.append(SUM + dif[ i]) for i in range((len(dif))): for p in range((len(dif))): if p != i and F(SUM + dif[ i] + dif[ p], 16)[ -1] == 'F': n.append(SUM + dif[ i] + dif[ p]) for i in range(int((len(dif) * 20) ** 0.5)): for p in range(int((len(dif) * 20) ** 0.5)): for j in range(int((len(dif) * 20) ** 0.5)): if p != i and i != j and p != j and \ F(SUM + dif[ i] + dif[ p] + dif[ j], 16)[ -1] == 'F': n.append(SUM + dif[ i] + dif[ p] + dif[ j]) print(min(n))[/pre2]


Ж: [pre2] f=open('d:/1/27-26b.txt') n=int(f.readline()) s=[list(map(int,c.split())) for c in f.readlines()] fl,k=True,[10**10]*16 for c in s: l=[] for d in k: if d<10**10 or fl: l.append((d<10**10)*d+c[0]) l.append((d<10**10)*d+c[1]) fl,k=False,[] for i in range(16): a=[c for c in l if c%16==i] if a: k.append(min(a)) print(k[-1]) [/pre2]



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