Пояснение к задаче:
- Нужно найти все элементы массива, которые делятся на 3 и заканчиваются цифрой 1.
- "Заканчиваются на 1" значит последняя цифра числа равна 1. При работе с отрицательными числами удобно использовать abs(x) % 10 == 1.
- Затем вычислить их среднее арифметическое. Если таких элементов нет, можно вернуть None или вывести сообщение.
Ниже готова надёжная реализация на Python (включая обработку случая без подходящих элементов).
Программа (вариант с функцией и примером использования):
def average_of_filtered(arr):
total = 0
count = 0
for x in arr:
# делится на 3 и заканчивается на 1 (последняя цифра = 1)
if x % 3 == 0 and abs(x) % 10 == 1:
total += x
count += 1
if count == 0:
return None # или можно вернуть 0, или поднять исключение
return total / count
# Пример использования
if __name__ == "__main__":
# Пример массива
arr = [3, 13, 33, 21, 31, 6, 10, -3, -21]
res = average_of_filtered(arr)
if res is None:
print("Нет элементов, удовлетворяющих условию.")
else:
print("Среднее арифметическое подходящих элементов:", res)
Дополнительный вариант через список-выражение (короткая версия):
def average_of_filtered_lc(arr):
filtered = [x for x in arr if x % 3 == 0 and abs(x) % 10 == 1]
if not filtered:
return None
return sum(filtered) / len(filtered)
Кратко о границах и примерах:
- Пример массива: [3, 13, 33, 21, 31, 6, 10, -3, -21]
- Подходящие элементы: 3, 21, -21 (они делятся на 3 и заканчиваются на 1)
- Среднее: (3 + 21 + -21) / 3 = 1/3 ≈ 0.333...
Если хотите, могу адаптировать код под ввод пользователя (например, считывать числа из строки или файла) или расширить обработку ошибок.