С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/64: Рейтинг темы: голосов - 64, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 19.08.2021
Сообщений: 8

Определить количество пар элементов последовательности сумма которых не более заданой

19.08.2021, 11:39. Показов 13637. Ответов 7

Студворк — интернет-сервис помощи студентам
Прошу помочь мне с решением этой задачи из егэ по информатике, с комментами к проге, заранее благодарю.
Никакого файла, к сожалению, нет, в этом для меня и вся сложность


Дана последовательность N целых положительных чисел. Необходимо определить количество пар элементов этой последовательности, сумма которых не более m=34, при этом первый элемент пары должен быть больше второго (a[i] > a[j], i < j).

Входные данные.
В первой строке записано натуральное число N (1 < N < 10000) – количество чисел в последовательности. В следующих N строках записаны числа, входящие в последовательность, по одному в каждой строке.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2021, 11:39
Ответы с готовыми решениями:

Определить количество пар элементов последовательности у которых сумма элементов кратна 12
Друзья, помогите пожалуйста справиться с задачей ЕГЭ Вот текст: В файле содержится последовательность из 10 000 целых положительных...

Программа должна найти и вывести количество и наименьшую сумму пар элементов последовательности, удвоенная сумма которых
В файле 17.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые положительные значения до 10...

Определить количество пар элементов, сумма которых делится на 91 и при этом хотя бы один элемент из пары строго больше 3
Имеется набор данных из N целых чисел. Рассматриваются все пары различных элементов последовательности. Необходимо определить количество...

7
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
19.08.2021, 12:25
RikkiFy,
Если я правильно понимаю, пары должны состоять из рядом стоящих чисел, тогда простое решение такое
Python
1
2
3
i = int(input('Количество элементов '))
enter = [int(input()) for _ in range(i)]
print(sum(b > c and b + c <= 34 for b, c in zip(enter, enter[1:])))
Добавлено через 10 минут
Первая, вторая строки думаю понятны.
В третьей функция zip формирует кортежи из пар элементов с индексами в списке (0, 1) (1, 2) (2, 3) и т.д. Их элементы присваиваются переменным b и c.
Условие
Python
1
b > c and b + c <= 34
в случае истины дает 1 или 0 если оно не выполняется. Эти нули и единицы складываются, получается количество требуемых пар.
0
0 / 0 / 0
Регистрация: 19.08.2021
Сообщений: 8
19.08.2021, 12:26  [ТС]
Спасибо за решение, не могли бы вы её по максимуму расписать, если не трудно, я просто только перехожу в 11 класс и такой код мне понимать довольно трудно, прикрепил примерный файл, чтобы было проще
Вложения
Тип файла: txt задача.txt (44 байт, 23 просмотров)
0
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
19.08.2021, 13:20
RikkiFy, так наверное будет понятнее:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Объявляем пустой список
enter = list()
 
# Ввод данных
# Просим ввести количество элементов в списке и записываем число в переменную n
n = int(input('Количество элементов '))
# Запускаем цикл на n раз
for i in range(n):
    # Принимаем в консоли значение элемента, приводим его к целому типу
    elem = int(input())
    # Добавляем элемент в список
    enter.append(elem)
 
c = 0 # Счетчик подошедших по условию пар
# Получаем индексы элементов списка от 0 до предпоследнего в цикле
for i in range(n - 1):
    if enter[i] > enter[i+1] and enter[i] + enter[i+1] <= 34:
        # Если для текущего и следующего за ним элемента списка выполняется условие:
        # первый элемент больше следующего за ним и их сумма не больше 34
        # увеличиваем счетчик на 1
        c += 1
 
# По окончании цикла переменная c будет иметь значение количества требуемых пар, выводим ее
print(c)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.08.2021, 13:53
Цитата Сообщение от avdivo Посмотреть сообщение
Объявляем пустой список
Здесь список вообще не нужен. Много лишней работы. Это к слову о
Цитата Сообщение от RikkiFy Посмотреть сообщение
эффективный алгоритм
Добавлено через 23 минуты
как вариант
Python
1
2
3
4
5
6
7
8
9
10
count = 0    # счетчик
with open('задача.txt', 'r') as f:  # открываем файл на чтение и для обращения к нему обзываем буковкой f
    x = int(f.readline())           # читаем первую строку и переводим в число
    a = int(f.readline())           # читаем следующее число (первое число пары)
    for i in range(x-1):            # цикл по количеству строк, -1 потому что одно число уже взяли выше
        b = int(f.readline())       # читаем следующую строку и переводим в число - второе в паре
        if a > b and a + b <= 34:   # проверяем согласно условию
            count += 1              # увеличиваем счетчик в случае удовлетворения условию
        a = b                       # "сдвигаем" второе число из пары на первое место )))
print(count)                        # по окончанию цикла выводим результат
1
0 / 0 / 0
Регистрация: 19.08.2021
Сообщений: 8
19.08.2021, 14:01  [ТС]
дополню суть задания: на каждое число в файле надо найти ВСЕ пары и тоже их прибавить, т. е. для каждого числа в файле надо найти все такие пары, сначала для первого, потом для второго, с каждым разом кол-во чисел для проверки уменьшается на 1, если можете, исправьте пожалуйста, заранее спасибо!
0
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
19.08.2021, 15:37
iSmokeJC,
с новым условием список все таки пригодится.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
enter = list()
 
c = 0 # Счетчик подошедших по условию пар
# Ввод данных
# открываем файл для чтения
with open('задача.txt', 'r') as f:
    n = int(f.readline())           # читаем первую строку и переводим в число (это количество элементов)
    for i in range(n):
        # читаем остальные строки, переводим их в целые числа и добавляем в список
        enter.append(int(f.readline()))
 
# Получаем индексы элементов списка от 0 до предпоследнего в цикле
for i in range(n-1):
    # Получаем индексы элементов списка со следующего за i и до последнего
    for j in range(i+1, n):
        if enter[i] > enter[j] and enter[i] + enter[j] <= 34:
            # Если для текущего и всех следующих за ним элемента списка выполняется условие:
            # первый элемент больше очередного и их сумма не больше 34
            # увеличиваем счетчик на 1
            c += 1
 
# По окончании цикла переменная c будет иметь значение количества требуемых пар, выводим ее
print(c)
1
Эксперт Python
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
19.08.2021, 16:24
avdivo, можно сразу проверять:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
m = 34
 
c = 0 # Счетчик подошедших по условию пар
# Ввод данных
# открываем файл для чтения
with open('input.txt', 'r') as f:
    n = int(f.readline())           # читаем первую строку и переводим в число (это количество элементов)
    
    tmp = int(f.readline())
    n -= 1
    
    # если число > 33, считываем следующие, пока не будет tmp < 34
    while tmp > m - 1:
        tmp = int(f.readline())
        n -= 1
    enter = [tmp]
        
    for i in range(n):
        # читаем остальные строки, переводим их в целые числа и добавляем в список
        tmp = int(f.readline())
        if tmp < m - 1 and len(enter):
            
            # проверяем условия задания, проходя по существующему списку
            for k in enter:
                if k + tmp < m + 1 and k > tmp:
                        #print(k, tmp)
                        c += 1
            enter.append(tmp)
 
print(c)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2021, 16:24
Помогаю со студенческими работами здесь

Количество пар элементов последовательности, у которых разность элементов кратна 36 и хотя бы один из элементов кратен 1
В файле содержится последовательность из 10 000 целых положительных чисел. Каждое число не превышает 10 000. Определите и запишите в ответе...

Количество пар элементов последовательности, разность которых четна
Дана последовательность целых чисел,которую вы вводите с клавиатуры. Определите и запишите в ответе сначала количество пар элементов...

Определить количество пар чисел, сумма которых является простыми числами
Программа которая по заданным пятью числами определяет количество пар, сумма которых является простыми числами

Определить количество пар чисел сумма которых является простым числом
Написать програму которая по заданым N числам опредиляет количество пар, сумма которых есть простым числом

Найти количество пар элементов, сумма которых будет делиться на 70
Здравствуйте! У меня есть лист, заполненный рандомными числами, мне нужно найти количество пар элементов, сумма которых будет делиться на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru