Сравните данные две степени числа 10
Даны 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)