Автор | Сообщение |
|
Отправлено: 07.06.22 06:25. Заголовок: задача 17 (5210)
(№ 5210) (М. Шагитов) В файле 17-316.txt содержится последовательность целых чисел. Элементы последовательности - четырёхзначные натуральные числа. Назовём два различных четырёхзначных числа хорошей парой, если их среднее арифметическое (полусумма) и среднее геометрическое (квадратный корень из произведения) — натуральные числа. Найдите все тройки элементов последовательности, в которых есть хотя бы одна хорошая пара, а сумма всех чисел тройки меньше максимальной суммы двух различных элементов последовательности. В ответе запишите количество найденных троек, затем минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности. a=[int(x) for x in open("17-316.txt")] b=[] c=sorted(a) s=c[-1]+c[-2] for i in range(1, len(a) - 1): if ((a[ i]+a[i-1]+a[i+1])<s ) and ((((a[ i]+a[i-1])%2==0) and(a[ i]!=a[i-1] ) and ((int(a[ i]*a[i-1])**0.5)**2)==a[ i]*a[i-1]) or (((a[ i]+a[i+1])%2==0) and(a [ i]!=a[i+1] ) and ((int(a[ i]*a[i+1])**0.5)**2)==a[ i]*a[i+1]) or (((a[i-1]+a[i+1])%2==0) and(a[i+1]!=a[i-1] ) and ((int(a[i+1]*a[i-1])**0.5)**2)==a[i+1]*a[i-1])): b.append(a[ i]+a[i-1]+a[i+1]) print(len(b),min(b)) подскажите,пожалуйста, где ошибка в коде. Ответ: 3151 3850 Мой ответ программы:6397 3148
|
|
|
Ответов - 2
[только новые]
|
|
|
| Администратор
|
Сообщение: 3570
|
|
Отправлено: 07.06.22 08:23. Заголовок: AnnaPershina пишет: ..
AnnaPershina пишет: цитата: | почему-то на форуме в тексте программы не печатает а[и] . В программе есть |
|
Это потому, что вы не читаете то, что написано вверху на желтом фоне.
|
|
|
|
Отправлено: 12.11.23 17:47. Заголовок: Добрый день! Назовём..
Добрый день! Назовём два различных четырёхзначных числа хорошей парой, если их среднее арифметическое (полусумма) и среднее геометрическое (квадратный корень из произведения) — натуральные числа. Если в коде убрать проверку условия a!=b, программа выдает верный ответ 3151 3850. Но ведь это условие должно быть проверено, тогда ответ 3146 3850 f=open('d:/1.txt') s=[int(c) for c in f] maxi=sum(sorted(set(s))[-2::]) usl=lambda a,b: (a+b)/2==int((a+b)/2) and (a*b)**0.5==int((a*b)**0.5) l=[sum(s[i:i+3]) for i in range(len(s)-2) if (usl(s,s[i+1]) or usl(s,s[i+2]) or usl(s[i+1],s[i+2])) and sum(s[i:i+3])<maxi ] print(len(l),min(l))
|
|
|
|