- Установить точность вещ. числа для определения числа Фибоначчи
- Определить, является ли число членом последовательности Фибоначчи
- Решение
- Определить является ли число элементом последовательности Фибоначчи
- 2 ответа 2
- Определить, является ли заданное число числом Фибоначчи?
- Проверить является ли оно числом Фибоначчи
Установить точность вещ. числа для определения числа Фибоначчи
Задание такое Вам дается последовательность чисел. Для каждого числа определите, является ли оно числом Фибоначчи. Первая строка содержит одно число N – количество запросов. Следующие N строк содержат по одному целому числу. При этом соблюдаются следующие ограничения: Размер каждого числа не превосходит 5000 цифр в десятичном представлении. Wrong answer на 6 тесте. Может кто нибудь помочь, пожалуйста
import math n = int(input()) for i in range(n): a = int(input()) fib1 = ((5 * a * a - 4) ** 0.5) % 1.
Что-то я лично не понимаю, что вы проверяете этими неравенствами, при чём тут фибоначчи вообще. Или есть такая формула?
@CrazyElf Да, проблема в том, что в формуле есть sqrt. И при проверке нужно уточнить точность. Не знаю, как ru.stackoverflow.com/questions/970873/…
А, ну да, я нашёл уже тоже. А почему вы не с нулём сравниваете? И почему остаток от %1. , а не %1 ? Вроде в том вопросе таких сложностей не было
Ну, между math.sqrt и **0.5 вроде нет никакой разницы в результате, второе даже лучше - библиотеку не нужно подключать
1 ответ 1
Очень хороший тест состоит в том, что N является числом Фибоначчи тогда и только тогда, когда 5 N^2 + 4 или 5N^2 – 4 - это квадратное число.
полученное число можно разложить на простые множители - кол-во различных простых множителей должно быть чётным - это 100% без всякой потери точности определение квадрата
вопрос насколько быстро можно перебрать простые множители от 2 до sqrt(5N**2 + 4) при условии, что в числе 5000 цифр
а во вторых
сравнивать квадраты лучше так:
int((5 * a * a - 4) ** 0.5)) ** 2 == (5 * a * a - 4)
тут тоже будет однозначный ответ
value = 5 * a * a - 4 value_sqrt = math.sqrt(value) res1 = value_sqrt * value_sqrt == value
по возможности функцию возведения в степень лучше не использовать - она медленнее обычного умножения
для ускорения (если провал теста из-за скорости) лучше не вычислять сразу условия и для 5N+4 и для 5N-4 , а сделать последовательно, тогда на числах можно иногда экономить в 2 раза по скорости
value = 5 * a * a - 4 value_sqrt = math.sqrt(value) if value_sqrt * value_sqrt == value: print("Yes") continue value = 5 * a * a + 4 value_sqrt = math.sqrt(value) if value_sqrt * value_sqrt == value: print("Yes") continue
Определить, является ли число членом последовательности Фибоначчи
Условие:
Дано натуральное число nn. Необходимо определить, является ли оно членом последовательности Фибоначчи.
Вводится целое число nn (1≤n≤230−11≤n≤230−1).
Формат выходных данных
Выведите «YES», если nn — член последовательности, и «NO» в противном случае.
Примечания
Последовательность Фибоначчи — это последовательность, в которой первые два члена равны 11, а каждый последующий равен сумме двух предыдущих). Эта последовательность начинается следующим образом: 1,1,2,3,5,8,13,21.
------------------
помогите пожалуйста,использовать нужно циклы while и for
Для данного n выяснить, является ли это n членом последовательности Фибоначчи (1,1,2,3,5,8,13.)
Для данного n выяснить, является ли это n членом последовательности Фибоначчи (1,1,2,3,5,8,13. )
Определить, является ли число членом последовательности Фибоначчи
Дано натуральное число n. Необходимо определить, является ли оно членом последовательности.
Определить, является ли заданное число членом последовательности Фибоначчи (цикл while)
Дано натуральное число. Определить, является ли оно членом последовательности Фибоначчи (первое.
Является ли число членом ряда Фибоначчи?
Установить, является ли заданное натуральное число n<100 000 членом ряда Фибоначчи. Использовать.
можна точнее дать водится целое число nn (1≤n≤230−11≤n≤230−1).
Добавлено через 10 минут
nn = int(input()) sp=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946] if nn in sp: print('YES') else: print('NO')
Сообщение было отмечено zap-zap как решение
Решение
Сообщение от zap-zap
вам помочь или написать за вас?
вот вам функция поиска чисел Фибоначчи. Останется немного переделать её.
def fib(n): a, b = 1, 1 for _ in range(2, n): a, b = b, a + b return b
Дано число N. Определить, является ли оно числом, принадлежащим последовательности Фибоначчи
Дано число N. Определить, является ли оно числом, принадлежащим последовательности Фибоначчи, и.
Дано целое число N (> 1). Определить, является ли число N числом Фибоначчи
Дано целое число N (> 1). Определить, является ли число N числом Фибоначчи. Если является, то.
Определить, является ли число числом Фибоначчи
Дано натуральное n . Определить, является ли оно числом Фибоначчи , т.е. является ли.
Определить, является ли число N числом Фибоначчи
Числа Фибоначчи (fn) определяются формулами f_0 =f_1 = 1; \ f_n = f_ + f_ , \ n =2,3.
Определить является ли число элементом последовательности Фибоначчи
Нужно определить является ли число элементом фибоначчи с помощью лямбды, True/False. Есть код fib = lambda n, a=1, b=2: int(((a + 5**0.5)**n - (b - 5**0.5)**n) / (b**n * 5**0.5)) Который лишь выводит элемент. Аналогично и тут, однако не уверен, что распаковку типа a, b = b, a + b в анонимных функциях возможно сделать.
def fib(n): a, b = 0, 1 for __ in range(n): a, b = b, a + b if n == b: return True return False print(fib(144))
2 ответа 2
Натуральное число N является числом Фибоначчи тогда и только тогда, когда 5N^2 + 4 или 5N^2 - 4 является квадратом. Квадратное число — число, являющееся квадратом некоторого целого числа.
Таким образом получился такой немного громоздкий код:
from math import sqrt fib = lambda n: True if sqrt(5*(n**2)-4)%1 == 0 or sqrt(5*(n**2)+4)%1 == 0 else False fib(5) # True fib(14) # False fib(4181) # True
- Вычисляем значения sqrt(5*(n**2)-4) и sqrt(5*(n**2)+4) и находим остаток от деления на 1. В случае, если одно из значений (5*(n**2)-4) или (5*(n**2)+4) является квадратом, то корень квадратный от такого числа является натуральным числом и, следовательно, остаток от деления на 1 будет равен 0.
- Соответственно затем проверяем остаток от деления. Если один из остатков равен 0, выводим True , в противном случае -- False
Таким образом, при проверке не нужно каждый раз вычислять ряд Фибоначчи.
Определить, является ли заданное число числом Фибоначчи?
Числа Фибоначчи строятся следующим образом: 1, 1, 2, 3, 5, …. В этой последовательности, начиная с третьего числа, каждый следующий член равен сумме двух предыдущих. Получаем, что, например, шестое число равно 8, а десятое - 55.
Требуется написать программу, которая определяет, является ли заданное число числом Фибоначчи.
Входные данные
Входной текстовый файл INPUT.TXT содержит одно натуральное число в диапазоне от 2 до 1200000000.
Выходные данные
Выходной файл OUTPUT.TXT должен содержать в первой строке 1, если заданное число является числом Фибоначчи, и 0, иначе. В первом случае во вторую строку требуется вывести его порядковый номер.
Составил код теперь нужно понять как сделать так чтобы в ответ шли нужные числа, а не все подряд. Помогите кто знает
1 2 3 4 5 6 7 8 9 10 11 12 13 14
N=int(input()) a=0 b=1 i=1 while iN: i=i+1 c=a+b a=b b=c if N==b: print(1) print(i) else: print(0)
Проверить является ли оно числом Фибоначчи
Помогите, пожалуйста. Я вообще не понимаю как это делать.
Задание: Вводится целое число N (0
while).
Пример:
Вычисление N-го числа Фибоначчи (N>2).
x1, x2 = 1, 1 print (”Введите номер числа Фибоначчи: ”); n = int ( input() ) for i in range(2,n): F = x1 + x2 x1=x2 x2=F print (’Число Фибоначчи= ’,F)
Проверить, является ли число N числом Фибоначчи
Дано целое число N (>1). Последовательность определяется следующим образом: F(1) = 1, F(2) = 1.
Определить, является ли заданное число числом Фибоначчи?
Числа Фибоначчи строятся следующим образом: 1, 1, 2, 3, 5, …. В этой последовательности, начиная с.
Определить, является ли оно числом: Нулевым? Четным? Большим -7? Степенью 6?
Ввести некоторое целое число N. Определить, является ли оно числом: Нулевым? Четным? Большим -7.
Определить,является ли n числом Фибоначчи,то есть является ли оно элементом последовательности
Дано натуральное число "n.Определить,является ли n числом Фибоначчи,то есть является ли оно.
Ввести число и определить, является ли оно числом Фибоначчи
Доброго времени суток всем! Необходима помощь в решении задачи: Последовательность ряда.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
def fibtest(n): if n == 1: print('true') else: a = 1 b = 1 c = 0 while c n: c = a+b a = b b = c if c == n: print('true') else: print('false') if __name__ == '__main__': fibtest(n=5)