Md Razeenuddin Mehdi Ответов: 0

Лучший способ найти количество итераций для этого алгоритма


Нам была поставлена задача сложить два числа без оператора + и с помощью XOR, AND и <<.
Наша задача состоит в том, чтобы найти общее количество итераций, которые будет выполнять цикл while.

Что я уже пробовал:

<pre>
from sys import stdin,stdout
T = int(stdin.readline().strip())
for itr_t in range(T):
    a = (stdin.readline().strip(),2)
    b = (stdin.readline().strip(),2)
    print(a)
    print(b)
    count = 0
    while b != 0:
                count += 1
                u = a^b
                v = a&b
                a = u
                b = v << 1
    print(count)


Поэтому я просто использовал базовый счетчик, но я хочу оптимизировать его и хочу найти счетчик, фактически не выполняя операции снова и снова.
Моя логика заключается в том, что count = to the number of times the carry will be shifted
Но мне бы очень хотелось получить какой-нибудь намек/совет на этот счет, чтобы применить лучшую логику, чтобы найти графа. Я считаю, что сложность составляет O(1).
Я знаю, что пробовал это в python, но я прекрасно справляюсь и с C++

PIEBALDconsult

# определить добавить +

Сделано.

0 Ответов