Уведомления

Группа в Telegram: @pythonsu

#1 Май 18, 2021 19:26:28

xrazed
Зарегистрирован: 2021-05-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

ЕГЭ по информатике. Задание номер 17.

Приветствую, форумчане. Возникла трудность со следующей задачей:
Рассматривается множество целых чисел, принадлежащих числовому отрезку (1045; 2299) (скобки квадратные в условии, однако на форуме при квадратных скобках содержание пропадает) , таких, что либо в них совпадают две последние цифры, либо они не делятся ни на 2, ни на 3.
Найдите количество таких чисел и их сумму.

Моя трудность заключается в том, что я не знаю, как проверить совпадение двух последних цифр.
Если можно, то решите как можно проще, ибо я новичок и всякие импорты модулей мне не совсем ясны.
Заранее спасибо!

Отредактировано xrazed (Май 18, 2021 19:32:34)

Офлайн

#2 Май 18, 2021 21:06:15

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

ЕГЭ по информатике. Задание номер 17.

 in_list = [i for i in range(1045, 2300)]
print(in_list)
#print([i for i in in_list if str(i)[-1] == str(i)[-2]])
#print(filter(lambda x: str(x)[-1] == str(x)[-2], in_list))
out_list = []
for i in in_list:
    test = str(i)
    if test[-1] == test[-2]:
        out_list.append(i)
print(out_list)



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Май 18, 2021 21:14:53)

Офлайн

#3 Май 18, 2021 21:30:04

xrazed
Зарегистрирован: 2021-05-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

ЕГЭ по информатике. Задание номер 17.

AD0DE412
Вы решаете детскую задачу очень не детским способом. Помучавшись, я сам ее решил. В моем понимании “простое” решение выглядит так:
 k = 0
sum = 0
for i in range(1045, 2299+1):
    if (i % 100 == 11 or i % 100 == 22 or i % 100 == 33 or i % 100 == 44 or i % 100 == 55 or i % 100 == 66 or i % 100 == 77 or i % 100 == 88 or i % 100 == 99 or i % 100 == 00) or (i % 2 != 0 and i % 3 != 0):
        k = k + 1
        sum = sum + i
        print(k, sum)

Офлайн

#4 Май 18, 2021 21:47:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

ЕГЭ по информатике. Задание номер 17.

  
>>> n = 0
>>> s = 0
>>> for num in range(1045, 2299 + 1):
...     d1 = num % 10
...     d2 = num % 100 // 10
...     if d1 == d2 or (num % 2 != 0 and num % 3 != 0):
...         n += 1
...         s += num
... 
>>> print('quantity =', n, 'sum =', s)
quantity = 502 sum = 840148
>>>



Отредактировано py.user.next (Май 18, 2021 21:48:41)

Офлайн

#5 Май 18, 2021 23:42:54

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

ЕГЭ по информатике. Задание номер 17.

В качестве идеи.

 >>> (222122 % 100) % 11
0
>>> (222123 % 100) % 11
1
>>> (222199 % 100) % 11
0
>>> (222100 % 100) % 11
0



Офлайн

#6 Май 19, 2021 04:50:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

ЕГЭ по информатике. Задание номер 17.

doza_and
В качестве идеи.
Плюсы от этого: быстрее операция происходит.
Минусы от этого: неясность, добавляется куча ограничений.

Ограничения какие:
1) Цифр должно быть две. Не три, не одна, не десять и не сто.
2) Цифры обязательно должны быть равны друг другу. Ни <одна больше другой>, ни <одна меньше другой>, ни <одна делится на столько, а другая на вот столько>.
3) Если цифр больше, то и условий может быть ещё больше. Выбрать числа, в которых есть палиндромы из цифр.

Короче, разложение на отдельные цифры даёт больше возможностей, даёт писать очень забубённые алгоритмы. Соответственно, таким путём можно решить очень много всяких задач, при этом оставаясь в рамках довольно простых и понятных алгоритмов.



Отредактировано py.user.next (Май 19, 2021 04:52:47)

Офлайн

#7 Май 19, 2021 05:55:18

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

ЕГЭ по информатике. Задание номер 17.

xrazed
Помучавшись, я сам ее решил.
молодец
xrazed
очень не детским способом
ну что значит не детским очень даже … я вас научу



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#8 Май 19, 2021 16:48:52

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

ЕГЭ по информатике. Задание номер 17.

xrazed
В моем понимании “простое” решение выглядит так:
Нет, учитвая что это задание ЕГЭ по информатике, за такое:
 if (i % 100 == 11 or i % 100 == 22 or i % 100 == 33 or i % 100 == 44 or i % 100 == 55 or i % 100 == 66 or i % 100 == 77 or i % 100 == 88 or i % 100 == 99 or i % 100 == 00) or (i % 2 != 0 and i % 3 != 0):
я бы бил по рукам стальной линейкой отправлял на персдачу. То что вы написали назывется “китайский код” . Очень часто китайский код пишут тупые студенты, которые пришли учиться программировать по неясным причинам. Выражение «ебу и патчу» произошло благодаря как раз таким случаям. https://lurkmore.to/%D0%98%D0%BD%D0%B4%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BE%D0%B4#mws_upT1Sjm


Самый “простой” вариант вам уже предложил AD0DE412 ( приведя к строке и сравнивая два последних символа ), но этот метод “простой” для пайтона, на какомнить паскале или не дай бог, бейсике, вам пришлось бы делать как предложил py.user.next через математику.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Май 19, 2021 20:06:10)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version