Сравните данные две степени числа 10

Опубликовано: 20 Сентября, 2022

Даны 4 целых числа A, B, Z1 и Z2. Задача состоит в том, чтобы сравнить A*10 Z1 и B*10 Z2 .

Примеры:

Input: A = 19, Z1 = 2, B = 20, Z2 = 1
Output: A > B
Explanation:
A can be written as 1900 
B can be written as 200 
So, A is greater than B.

Input:, A = 199, Z1 =10, B = 96, Z2 = 1000
Output: A < B
Explanation:
A can be written as 19900000…. 
B can be written as 9600000……
So, A is smaller than B

Наивный подход: умножьте A с нулями Z1 и B с нулями Z2 и сравните оба. Но большое число не может быть сохранено в длинном длинном целом больше 18 цифр.
Временная сложность: O(1)
Вспомогательное пространство: O(1)

Эффективный подход: Идея состоит в том, чтобы сравнить общее количество цифр в A и B, потому что наибольшее число цифр является максимальным, чем другое.

  • Возьмите две переменные и adigits и bdigits и инициализируйте их нулем .
  • Инициализируйте переменные tempA и tempB как A и B , пройдите в цикле while и сохраните количество цифр в A и B.
  • Сравните значения adigits+z1 и bdigits+z2. Если их значения равны, то выполнить следующие задачи:
    • Если adigits больше, чем bdigits, тогда инициализируйте переменные addZeros как adigits-bdigits и b как 10 addZeros, и наоборот, если bdigits больше, чем adigits.
  • Теперь сравните значения a и b , выполните результаты.

Ниже приведена реализация описанного выше подхода.


Временная сложность: O(1)
Вспомогательное пространство: O(1)