Форум » Обработка целых чисел » Задача №345 Не сходится ответ » Ответить

Задача №345 Не сходится ответ

SONYA11aB: Добрый день! В задаче №345 есть условие,которое гласит:"Определите количество пар последовательности, в которых ТОЛЬКО ОДНО число меньше разности максимального и минимального из чисел последовательности, оканчивающихся на 52. " У меня получается ответ:107 18188 У автора: 214 18188 Мое решение прикрепляю ниже: [pre2] a=[int(x) for x in open('17-345.txt')] ans=[] p=[] for i in range(len(a)): if a[ i]%100==52 : p.append(a[ i]) for i in range(0,len(a)-1): if ((a[ i]<(max(p)-min(p)) and a[i+1]>=(max(p)-min(p))))or ((a[i+1]<((max(p)-min(p)) and a[ i]>=(max(p)-min(p))))): ans.append(a[ i]+a[i+1]) print(len(ans),max(ans))[/pre2] В решении автора же есть строка: if (a < dif) + (a[i+1] < dif) == 1: res.append(a + a[i+1]) Но эта строка учитывает варианты, когда два числа могут быть меньше данной разности, что не соответствует условию задачи. В ответе автора:214 18188 Может быть, ответ неверный? Заранее благодарю за ответ.

Ответов - 1

Поляков: SONYA11aB пишет: if ((a[ i]<(max(p)-min(p)) and a[i+1]>=(max(p)-min(p))))or ((a[i+1]<((max(p)-min(p)) and a[ i]>=(max(p)-min(p))))): Проверьте, как стоят скобки. Должно быть так: [pre2] dif = max(p)-min(p) for i in range(0,len(a)-1): if (a[ i]< dif and a[i+1]>=dif) or (a[i+1]<dif and a[ i]>=dif): ans.append(a[ i]+a[i+1]) [/pre2] SONYA11aB пишет: В решении автора же есть строка: if (a[ i] < dif) + (a[i+1] < dif) == 1: res.append(a[ i] + a[i+1]) Но эта строка учитывает варианты, когда два числа могут быть меньше данной разности, что не соответствует условию задачи. Нет, там все хорошо. Лишнего не учитывает: [pre2] >>> print( False + False == 1 ) False >>> print( True + False == 1 ) True >>> print( True + True == 1 ) False [/pre2]



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