Блог для маленьких школьников и их родителей
ШколаЛа

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

Автор:
Предмет: Информатика
Уровень: студенческий

Python Напишите программу, которая определяет, сколько слагаемых должно быть в сумме 2+4+6+8+…, чтобы эта сумма оказалась больше некоторого данного натурального числа N на ПИТОНЕ

Ответов к вопросу: 2
  • maximumznanij98
    28.05.2024 | 13:20

    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)

  • 123456786698
    28.05.2024 | 13:25

    Ответ:
    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.

Ответить на вопрос:
:p :-p 8) 8-) :lol: =( :( :-( :8 ;) ;-) :(( :o:
Нажимая на кнопку я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.