Форум » Обработка числовых последовательностей » №5527 Не сходится ответ » Ответить

№5527 Не сходится ответ

ishinkirill: n_min=10000 n_max=0 kol=0 sum_max=0 f = open('17.21.txt') a=[int(i) for i in f] for i in range (len(a)): if (i%100==52 and i <n_min): n_min = i if (i%100==52 and n_max <i): n_max = i for i in range (len(a)-1): if ((a< (n_max-n_min)) and (a[i+1] >=(n_max-n_min)) or (a>= (n_max-n_min)) and (a[i+1] <(n_max-n_min))): kol+=1 if sum_max< (a+a[i+1]): sum_max=a+a[i+1] print(kol,' ',sum_max)

Ответов - 3

Александр Киселёв: Вот "правильное" решение: [pre2] file = open("17-345.txt") nums = list(map(int, file.read().split())) nums52 = [] #числа, оканчивающиеся на 52 nm = [] for i in nums: if i % 100 == 52: nums52.append(i) d = max(nums52) - min(nums52) s = [] #список сумм подходящих пар for i in range(1, len(nums)): if nums[ i] < d != nums[ i-1] < d: # != отсеивает варианты, в которых оба числа меньше d или ни одно из них. s.append(nums[ i]+nums[ i-1]) print(len(s), max(s)) #777 16966[/pre2] На сайте в качестве ответа указано 214 18188, но у меня получается 777 16966, и не могу понять, в чём ошибка.

1llumi: [pre2] a = list(map(int, open("17-345.txt"))) max_52 = max(int(c) for c in a if c%100==52) min_52 = min(int(c) for c in a if c%100==52) razn = max_52 - min_52 a2 = [] for i in range(len(a) -1 ): if (a < razn) + (a[i+1] < razn) == 1: a2.append(a+a[i+1]) print(len(a2), max(a2)) [/pre2] У меня все сошлось. У вас, как мне кажется, ошибка в этом "отсеивании". Поставьте скобки.

Александр Киселёв: Вы правы, действительно дело было в скобках.




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