Форум сайта python.su
Приветствую, форумчане. Возникла трудность со следующей задачей:
Рассматривается множество целых чисел, принадлежащих числовому отрезку (1045; 2299) (скобки квадратные в условии, однако на форуме при квадратных скобках содержание пропадает) , таких, что либо в них совпадают две последние цифры, либо они не делятся ни на 2, ни на 3.
Найдите количество таких чисел и их сумму.
Моя трудность заключается в том, что я не знаю, как проверить совпадение двух последних цифр.
Если можно, то решите как можно проще, ибо я новичок и всякие импорты модулей мне не совсем ясны.
Заранее спасибо!
Отредактировано xrazed (Май 18, 2021 19:32:34)
Офлайн
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)
Отредактировано AD0DE412 (Май 18, 2021 21:14:53)
Офлайн
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)
Офлайн
>>> 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)
Офлайн
В качестве идеи.
>>> (222122 % 100) % 11 0 >>> (222123 % 100) % 11 1 >>> (222199 % 100) % 11 0 >>> (222100 % 100) % 11 0
Офлайн
doza_andПлюсы от этого: быстрее операция происходит.
В качестве идеи.
Отредактировано py.user.next (Май 19, 2021 04:52:47)
Офлайн
xrazedмолодец
Помучавшись, я сам ее решил.
xrazedну что значит не детским очень даже … я вас научу
очень не детским способом
Офлайн
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):
[code python][/code]
Отредактировано PEHDOM (Май 19, 2021 20:06:10)
Офлайн