Форум » Обработка целых чисел » (№ 5374) (М. Шагитов) » Ответить

(№ 5374) (М. Шагитов)

evgenrep: (№ 5374) (М. Шагитов) В файле 17-340.txt содержится последовательность целых чисел. Элементы последовательности – пятизначные натуральные числа. Определите количество пар элементов последовательности, для которых в восьмеричной записи обоих чисел пары максимальная цифра расположена левее минимальной цифры, а сумма чисел пары меньше, чем среднее арифметическое всех чисел в файле, кратных 22. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. f = open('17-340.txt') s = list(map(int, f.readlines())) k22 = [i for i in s if i % 22 == 0] avg22 = sum(k22)/len(k22) k=0 for i in range(len(s) - 1): a, b = f"{s[ i ]:o}", f"{s[i + 1]:o}" if a.index(max(a)) < a.index(min(a)) and b.index(max(b)) < b.index(min(b)) and s[ i ] + s[i+1] < avg22: k += 1 print(k) Ответ получается в случае, если мы пишем, что индекс первого вхождения слева максимальной цифры меньше, чем индекс также первого вхождения слева минимальной цифры. В таком случае первая подходящая пара из файла 47271 и 56606 (уже переведено в восьмеричную), но, ведь цифры в числе могут располагаться так, что сначала идет минимум, потом максимум, а потом снова, например, минимум, тогда возникает вопрос, какое вхождение минимальной и максимальной цифры мы берем? В задаче подразумевается первое вхождение, но это не прописано. Если чуть-чуть исправить код и, например, искать не первое вхождение минимума, а последнее (вместо index использовать rindex), то первая подходящая пара из файла будет 65701 и 46454 (уже переведено в восьмеричную). Во втором числе ведь условие выполняется: есть шестерка левее четверки. И ответ на первый вопрос уже будет не 689, а 752. Или я не прав?

Ответов - 0



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