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

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

19.08.2021, 11:39. Показов 13946. Ответов 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
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru