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

Почему с set программа работает, а с list нет?

23.03.2022, 15:52. Показов 1531. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решал задачку ЕГЭшную:
Имеется набор данных, состоящий из N различных положительных чисел. Необходимо из этих чисел построить самую длинную возрастающую арифметическую прогрессию c шагом от 1 до 100 включительно и вывести её длину.
Используя список программа очень долго думает, и только используя set все работает. Почему так?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
with open("27-62b.txt") as f:
    N = int(f.readline())
    arr = [int(s) for s in f]
 
res = 0
for i in arr:
    for j in range(1, 101):
        x = i
        cnt = 0
        while x in arr:
            x += j
            cnt += 1
        res = max(res, cnt)
print(res)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
with open("27-62b.txt") as f:
    N = int(f.readline())
    arr = set([int(s) for s in f])
 
res = 0
for i in arr:
    for j in range(1, 101):
        x = i
        cnt = 0
        while x in arr:
            x += j
            cnt += 1
        res = max(res, cnt)
print(res)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2022, 15:52
Ответы с готовыми решениями:

Почему в Debug программа работает, а в Release нет?
Почему в Debug программа работает, а в Release нет?

Почему программа работает на одном компьютере и нет - на другом?
Поправил программу - пример чата Delphi для своей локальной сети. Но почему-то с одного компьютера она работает а с другого - нет. И...

кто может объяснить,почему на моем компе программа работает на других нет?код в Delphi
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,...

10
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,307
23.03.2022, 18:32
потому что это же две разных структуры. список из 10000000000000000 одинаковых элементов это множество из 1. явно что обработать один элемент намного быстрей чем 10000000000000000. но это совсем не то что нужно в вашем задании. множество не решит поставленную задачу
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
23.03.2022, 18:49
FerroQ,
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
import time
from bisect import bisect_left
def fun(a, elem):
    i = bisect_left(a, elem)
    if i < len(a):
        return a[i] == elem
    return False
    
    
t1 = time.time()
with open("27-62b.txt") as f:
    N = int(f.readline())
    arr = sorted([int(s) for s in f])
n = len(arr)
res = 0
for i in range(n-1):
    k = arr[i+1] - arr[i]
    x = arr[i]    
    for j in range(k, 101):
        cnt = 0
        ind = i
        while ind:
            cnt += 1
            x += j
            ind = fun(arr, x)
        res = max(res, cnt)
print(res)
print(time.time() - t1)
0
0 / 0 / 0
Регистрация: 18.07.2021
Сообщений: 8
28.03.2022, 15:27  [ТС]
Semen-Semenich, тут set не сокращает кол-во элементов. Я думаю, что функция in работает быстрее почему-то с множеством, а не с листом. Но правда ли это?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.03.2022, 16:13
Цитата Сообщение от FerroQ Посмотреть сообщение
тут set не сокращает кол-во элементов
А ты считай с файла в список и в сет. И посмотри на длины того и другого.

Добавлено через 3 минуты
ЗЫ. ув.Semen-Semenich выше верно подметил, что сет здесь не поможет. Точнее, он вообще сломает условия задачи.
0
0 / 0 / 0
Регистрация: 18.07.2021
Сообщений: 8
28.03.2022, 16:22  [ТС]
iSmokeJC, длины не меняются. А смысл задачи в том, чтобы выбирать числа из набора, т.е. их в любом порядке можно. Тут речь не про подпоследовательности. И с массивом очень долго выполняется... Не понимаю почему
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.03.2022, 16:39
Выложи входной текстовый файл
0
0 / 0 / 0
Регистрация: 18.07.2021
Сообщений: 8
28.03.2022, 16:55  [ТС]
Gdez, офигеть, твой код за 0.1 с считает, изучу его.
Но мой вопрос был про мой код с set и list, почему с set код выполняется с 1 с, а с list за 6 минут?

Добавлено через 2 минуты
iSmokeJC, ответ 317. Файл загрузить не могу, жалуется, что слишком большой.
https://kpolyakov.spb.ru/cms/f... 27-62b.txt - ссылка на файл
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,307
28.03.2022, 18:17
Цитата Сообщение от FerroQ Посмотреть сообщение
iSmokeJC, длины не меняются
если нет повторяющихся элементов то да а иначе
Python
1
2
3
4
5
6
>>> a = list('abcdefecsab')
>>> len(a)
11
>>> len(set(a))
7
>>>
но так как я понимаю в вашем файле все элементы уникальны то вообще нет смысла использовать множество
0
0 / 0 / 0
Регистрация: 18.07.2021
Сообщений: 8
29.03.2022, 15:31  [ТС]
Semen-Semenich, да, смысла вроде бы нет. Но... с set'ом программа за секунды считается, а с list'ом за минуты. Вот можете объяснить, в чем такая разница set'а и list'а в моей программе?
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.03.2022, 15:48
Лучший ответ Сообщение было отмечено FerroQ как решение

Решение

FerroQ,
https://skillbox.ru/media/code... esedovanii
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.03.2022, 15:48
Помогаю со студенческими работами здесь

Set DataGrid.DataSource = RecordSet на моей машине (с VB) работает на чистых - нет
работаю с ADO Set MSHFlexGrid.DataSource = RecordSet работает Set DataGrid.DataSource = RecordSet на моей машине (с VB) работает на...

Почему не работает массив List<>
Скажите пожалуйста что я делаю не так? public partial class Form1 : Form { public class Part1 { ...

Почему stable_sort работает для list?
почему stable_sort работает для list? как я знаю эта функция требует итератор RandomAccesIterator

Почему не работает код, когда использую LIST
Всем привет. Почему данный код не работает как надо ? Т.е. когда я ввожу данные в первое поле например: a b c Во второе поле:...

Почему в хроме не работает list-style-image?
На сайте http://remontenergo.ru Есть вертикальное раскрывающееся сss меню, все категории расположены в списках ul. Категориям третьего...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru