Лучший способ найти количество итераций для этого алгоритма
Нам была поставлена задача сложить два числа без оператора + и с помощью 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
# определить добавить +
Сделано.