На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 66
ссылка на сообщение  Отправлено: 01.04.21 20:06. Заголовок: ege15 №105


Здравствуйте, Константин Юрьевич.
Подскажите пожалуйста, в чем ошибка, у меня получается 26, а в ответе 25
 
P = set(range(44, 49+1))
Q = set range(28, 53+1))
A = set()
for x in range(28,53+1):
if (((x in A) <= (x in P)) or (x in Q)) == False:
A.add(x)
print(A)
print(len([x for x in A]))


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]







Сообщение: 409
ссылка на сообщение  Отправлено: 01.04.21 21:41. Заголовок: Ответ


Здравствуйте, s11kai!

В ДАННОМ случае len([x for x in A]) определяет не длину отрезка А, а количество точек с целочисленными координатами на этом отрезке.
Длина отрезка будет на 1 меньше.


Замечание:

if (((x in A) <= (x in P)) or (x in Q)) == True:

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 2652
ссылка на сообщение  Отправлено: 01.04.21 21:50. Заголовок: s11kai пишет: в чем..


s11kai пишет:
 цитата:
в чем ошибка, у меня получается 26, а в ответе 25

Здравствуйте! Я бы не рекомендовал использовать такой подход при решении задач на отрезки. Причину точно указал Сергей Сергеевич выше. Чтобы формально получить правильный результат, можно провести масштабирование:
 K = 100 
P = set(range(44*K, 49*K+1))
Q = set(range(28*K, 53*K+1))
U = set(range(100*K))
A = U.copy()
for x in U:
if (((x in A) <= (x in P)) or (x in Q)) == False:
A.remove(x)
# print(A)
print( len([x for x in A])/K )
Программа выведет ответ 25,01.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 67
ссылка на сообщение  Отправлено: 01.04.21 22:25. Заголовок: Спасибо за подробный..


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

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет