нужно сделать значение a либо b строго больше, чем некоторое данное число ?

нужно сделать значение a либо b строго больше, чем некоторое данное число ?. Нужно вычислить через сколько попыток А или Б превысит число N. если выполнить «a += b», когда a = 2, b = 3, значение a станет равно 5 (значение b при этом не изменится).

t = int(input())
i = 0
while i < t:
    data = list(map(int,input().split()))
    a = data[0]
    b = data[1]
    n = data[2]
    i += 1
    count = 0
    while a < n and b < n:
        if count % 2 == 1:
            a += b
            count += 1
        if count % 2 == 0:
            b += a
            count += 1

    print(count)

Ответы (2 шт):

Автор решения: MBo

Если вопрос в том, как исправить приведённый код - сделать

while a <= n and b <= n:
    a += b
    b += a
    count += 1 

поскольку спрашивается строго больше, и count увеличивать один раз за цикл, наверное, нужно.

Или так, если считать все действия:

while b <= n:
    a += b
    count += 1 
    if a > n:
       break
    b += a
    count += 1 

Если вопрос в оптимизации - нужно присмотреться, какие значения принимают a и b после K попыток. А эти значения выражаются формулами

ak = F(k)*a0 + F(k+1)*b0
bk = F(k+1)*a0 + F(k+2)*b0

где F() - числа Фибоначчи.

Решив целочисленное уравнение (точнее, неравенство) или использовав бинарный поиск, можно найти количество итераций.

→ Ссылка
Автор решения: Zhihar

для начала вот это

data = list(map(int,input().split()))
a = data[0]
b = data[1]
n = data[2]

можно схлопнуть вот в это:

a, b, n = map(int,input().split())

во-вторых вся эта конструкция

t = int(input())
i = 0
while i < t:

похоже нужна только для

for i in range(int(input())):

теперь о самом алгоритме:

у вас в условии написано

сделать значение a либо b строго больше, чем некоторое данное число ?

значит требуется не

while a < n and b < n:

а

while a <= n and b <= n:

далее смотрите что происходит в вашем коде:

    if count % 2 == 1:
        a += b
        count += 1
    if count % 2 == 0:
        b += a
        count += 1

если count нечётный то count увеличивается на 1 и становится четным... а дальше опять вы проверяете уже на чётность!!! - в итоге ошибка в логика

надо сделать ВЗАИМОИСКЛЮЧАЮЩИЕ ПРОВЕРКИ

    if count % 2 == 1:
        a += b
        count += 1
    else:
        b += a
        count += 1

и все, но компактнее записать так:

    if count % 2 == 1:
        a += b
    else:
        b += a

    count += 1
→ Ссылка