Программа для проверки наличия или отсутствия корней у квадратного уравнения c - PullRequest
0 голосов
/ 23 апреля 2020

Я решаю задачу для Express числа как суммы последовательных чисел.

Итак, я выяснил, получим ли мы корни квадратичной c формы уравнения с формулой n((n+1)//2), мы можем сделать это o(1) сложность времени.

Предположим, что у нас есть число x, если квадратное уравнение c сформировано с использованием приведенной выше формулы n ((n + 1) // 2), а число x содержит любые действительные корни, то оно может быть суммой последовательных чисел, в противном случае это не так.

1 Ответ

0 голосов
/ 23 апреля 2020

Вы ищете решение для x ^ 2 + x - 2N = 0, где N - это сумма, которую получит сумма чисел до x. Если х целое число, то есть решение. Используя стандартное решение уравнения квадратичного c, мы придумываем:

x = (-1 + √ (1 + 8N)) / 2

, чтобы вы могли написать свою функцию следующим образом:

def isSumToN(N):
    x = ((8*N+1)**0.5-1)/2
    return int(x) if x%1==0 else False

вывод:

isSumToN(10)  # 4
isSumToN(101) # False
...