Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача на Python, срочно. pls!

Дмитрий Висков Ученик (46), закрыт 1 месяц назад
Напишите программу, определяющую количество чисел x из диапазона от 1 до введённого числа n включительно, для которых одновременно выполняются два условия:

число x не кратно 3;
сумма цифр числа x имеет четность, противоположную четности самого числа x.


Например, при n = 20 таких чисел семь: 10, 11, 13, 14, 16, 17, 19.



Входные данные:

Вводится одно число 1 < n <= 10000.



Выходные данные:

Выведите количество чисел от 1 до n включительно, которые не кратны трем и сумма цифр которых имеет четность, противоположную четности самого числа.



В поле краткого ответа запишите ответ на задачу при n = 1000.



В поле развернутого ответа запишите программу для вычисления количества чисел.
Лучший ответ
Celtic Hammer Мудрец (14555) 1 месяц назад
Это делается в три строчки, а не так как у ботов сверху
 def f(x): 
return sum(list(map(int,str(x)))) % 2 != x % 2 and x % 3

print(*list(filter(f,list(range(1,20)))))
Остальные ответы
Артемий Поляков Мудрец (11475) 1 месяц назад
def count_numbers(n):
count = 0
for x in range(1, n + 1):
if x % 3 != 0:
sum_digits = 0
for digit in str(x):
sum_digits += int(digit)
if sum_digits % 2 != x % 2:
count += 1
return count
n = int(input())
result = count_numbers(n)
print(result)

Mail.ru убирает пробелы сорян
Celtic HammerМудрец (14555) 1 месяц назад
Это в три строчки делается
 def f(x): 
return sum(list(map(int,str(x)))) % 2 != x % 2 and x % 3

print(*list(filter(f,list(range(1,20)))))
Артемий Поляков Мудрец (11475) Celtic Hammer, молодец, можешь погладить себя по головке
Ralsei милый козлик Ученик (115) 1 месяц назад
def sum_of_digits(x):
return sum(int(digit) for digit in str(x))

def count_numbers(n):
count = 0
for x in range(1, n + 1):
if x % 3 != 0:
sum_digits = sum_of_digits(x)
if (x % 2 == 0 and sum_digits % 2 != 0) or (x % 2 != 0 and sum_digits % 2 == 0):
count += 1
return count

n = 1000 # Вы можете изменить это значение для других входных данных
result = count_numbers(n)
print(result)

Объяснение:
Функция sum_of_digits(x):

Вычисляет сумму цифр числа x.
Функция count_numbers(n):

Проходит по всем числам от 1 до n.
Проверяет, что число не кратно 3.
Проверяет, что четность суммы цифр противоположна четности самого числа.
Если оба условия выполняются, увеличивает счетчик.
Основная часть программы:

Определяет значение n (в данном случае 1000).
Вызывает функцию count_numbers(n) и выводит результат.
Результат для n = 1000:
Запуск этой программы выведет количество чисел, удовлетворяющих условиям задачи, для n = 1000.

print(count_numbers(1000)) # Выводит количество таких чисел для n = 1000


Ответ:
Ответ на задачу при n = 1000 можно получить, запустив данную программу.

Для быстрого получения ответа без выполнения всей программы здесь:


print(count_numbers(1000)) # Ответ будет выведен после выполнения этого кода


При n = 1000, количество таких чисел:



print(count_numbers(1000)) # 333


Программа посчитает и выведет 333.
Celtic HammerМудрец (14555) 1 месяц назад
Это, дорогая моя нейросеточка, в реале делается не так как ты написала, а в три строчки
 def f(x): 
return sum(list(map(int,str(x)))) % 2 != x % 2 and x % 3

print(*list(filter(f,list(range(1,20)))))
Ralsei милый козлик Ученик (115) Celtic Hammer, Спасибо за ваше замечание. Действительно, решение можно сделать компактнее с использованием функции filter и более лаконичного подхода. Вот исправленный и более компактный вариант: def f(x): return sum(map(int, str(x))) % 2 != x % 2 and x % 3 != 0 def count_numbers(n): return len(list(filter(f, range(1, n + 1)))) n = 1000 # Вы можете изменить это значение для других входных данных print(count_numbers(n))
Ralsei милый козликУченик (100) 1 месяц назад
Для n = 1000, программа посчитает и выведет количество чисел, удовлетворяющих условиям задачи.

Ответ:
Ответ на задачу при n = 1000 можно получить, запустив данную программу.
Celtic Hammer Мудрец (14555) Кончай заниматься идиотизмом
Ralsei милый козликУченик (101) 1 месяц назад
Объяснение
Функция f(x):

Проверяет, что сумма цифр числа

x имеет четность, противоположную четности самого числа.
Проверяет, что число

x не кратно 3.
Функция count_special_numbers(n):

Использует filter для применения функции f ко всем числам от 1 до

n включительно.
Возвращает количество таких чисел.
Основная часть программы:

Задает значение

n (в данном случае 1000).
Вызывает функцию count_special_numbers(n) и выводит результат.
Если у вас есть еще какие-либо вопросы или задачи, пожалуйста, дайте знать, и я постараюсь помочь.
Роберт Мыслитель (5408) 1 месяц назад
 Привет Дмитрий Висков!

## Решение задачи
Для начала разберемся с условиями, которым должны удовлетворять числа:
1. Число x не кратно 3: Это условие легко проверить с помощью оператора взятия остатка от деления (`%`). Если `x % 3 != 0`, то число не кратно 3.
2. Сумма цифр числа x имеет четность, противоположную четности самого числа x: Для этого нужно:
- Найти сумму цифр числа.
- Определить четность суммы цифр.
- Определить четность самого числа.
- Сравнить четность суммы цифр и числа.
Теперь напишем программу на Python, которая будет считать количество таких чисел в диапазоне от 1 до n:
```python
def opposite_parity_sum(n):
'''
Функция находит количество чисел от 1 до n, которые не кратны 3 и
сумма цифр которых имеет четность, противоположную четности самого числа.
'''
count = 0 # Инициализируем счетчик
for x in range(1, n + 1):
if x % 3 != 0: # Проверяем кратность 3
sum_of_digits = sum(int(digit) for digit in str(x)) # Находим сумму цифр
if (sum_of_digits % 2 == 0 and x % 2 != 0) or (sum_of_digits % 2 != 0 and x % 2 == 0):
# Проверяем противоположность четности
count += 1 # Увеличиваем счетчик, если оба условия выполнены
return count
n = int(input('Введите число n: '))
result = opposite_parity_sum(n)
print(f'Количество чисел: {result}')
```
Краткое решение:
Для n = 1000 количество чисел равно 333.


!!! Ответ сгенерированный нейросетью !!!
Celtic HammerМудрец (14555) 1 месяц назад
Это, дорогая моя нейросеточка, в реале делается не так как ты написала, а в три строчки
 def f(x):  
return sum(list(map(int,str(x)))) % 2 != x % 2 and x % 3

print(*list(filter(f,list(range(1,20)))))
Юрий Семыкин Искусственный Интеллект (194963) 1 месяц назад
 def sumDig(n): 
return sum(int(i) for i in str(n))
print(sum(1 for i in range(int(input('n='))) if (i%3) and (i+sumDig(i))%2 ))
Похожие вопросы