Вопрос задан 22.06.2023 в 04:37. Предмет Информатика. Спрашивает Столярова Мария.

Python Напишите программу, которая определяет, сколько слагаемых должно быть в сумме 2+4+6+8+…,

чтобы эта сумма оказалась больше некоторого данного натурального числа N на ПИТОНЕ
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Ошовська Христуня.

2 + 4 + 6 + ... + 2k - арифметическая прогрессия, значит мы можем найти сумму этого ряда по формуле суммы арифметической прогрессии, вынесем это в отдельную функцию :

def sumN(first, last):

   return (first + last) * ((last - first + 2) // 2) / 2

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

def sumN(first, last):

   return (first + last) * ((last - first + 1) // 2) / 2

N = int(input())

l = 1

r = 100000

res = -1

while l <= r :

   m = (l + r) // 2

   F = 2

   L = 2 * m

   if sumN(F,L) > N :

       res = m

       r = m - 1

   else :

       l = m + 1

print(res)

полный код :

def sumN(first, last):

   return (first + last) * ((last - first + 1) // 2) / 2

N = int(input())

l = 1

r = 100000

res = -1

while l <= r :

   m = (l + r) // 2

   F = 2

   L = 2 * m

   if sumN(F,L) > N :

       res = m

       r = m - 1

   else :

       l = m + 1

print(res)


0 0
Отвечает Герцен Данил.

Ответ:

N = int(input('Введите число N'))

sum = 0

add = 2

k = 0

while sum < =N:

sum += add

add += 2

k += 1

print(k)

Объяснение:

У меня реализация попроще, чем в предыдущем ответе, но вроде бы тоже правильная :)

Мы видим, что к сумме постоянно прибавляется число, на 2 большее, чем предыдущее, начиная с двух. Это и есть переменная add: изначально она равна 2, то есть на первом проходе цикла к сумме прибавится 2. После этого, в этом же цикле значение переменной add станет равно 4 (7-я строка), поэтому на втором проходе к сумме прибавится 4, и так далее. В итоге получаем правильную сумму: 2 + 4 + 6 + ...

Переменная k - это как раз искомое количество слагаемых этой суммы. Каждый раз, когда к сумме прибавляется новое слагаемое, она увеличивается на 1.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вы можете написать программу на Python, чтобы найти количество слагаемых, необходимых для того, чтобы сумма арифметической прогрессии 2+4+6+8+... превысила заданное натуральное число N. Для этого вы можете использовать следующий код:

python
def find_number_of_terms_to_exceed_N(N): sum_of_terms = 0 number_of_terms = 0 term = 2 # Первый член последовательности while sum_of_terms <= N: sum_of_terms += term term += 2 # Увеличиваем следующий член на 2 number_of_terms += 1 return number_of_terms N = int(input("Введите натуральное число N: ")) result = find_number_of_terms_to_exceed_N(N) print(f"Для превышения числа {N} необходимо {result} слагаемых.")

Этот код определит, сколько членов арифметической прогрессии 2+4+6+8+... нужно сложить, чтобы сумма превысила заданное натуральное число N, и выведет результат.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос