# Compare given two powers of 10

• Last Updated : 28 Jan, 2022

Given 4 integers A, B, Z1, and Z2. The task is to compare A*10Z1 and B*10Z2.

Examples:

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

Naive Approach : Multiply A with Z1 zeroes and B with Z2 zeroes and compare both But large number cannot be store in long long integer more than 18 digits.
Time Complexity: O(1)
Auxiliary Space: O(1)

Efficient Approach: The idea is to compare the total number of digits in A and B because the largest digit number is maximum than the other.

• Take two variables and adigits and bdigits and initialize to zero.
• Initialize the variables tempA and tempB as A and B and traverse in the while loop and store the number of digits in A and B.
• Compare the values of adigits+z1 and bdigits+z2. If their values are equal, then perform the following tasks:
• Now, compare the values of a and b, perform the results.

Below is the implementation of the above approach.

## C++

 `// C++ program for the above approach` `#include ` `using` `namespace` `std;`   `// Function to compare 2 numbers A and B` `string CompareNumbers(``int` `a, ``int` `b,` `                      ``int` `z1, ``int` `z2)` `{`   `    ``// Calculate number of digits` `    ``// in both the numbers` `    ``int` `Adigits = 0, Bdigits = 0;` `    ``int` `tempA = a, tempB = b;`   `    ``while` `(tempA != 0) {` `        ``Adigits++;` `        ``tempA /= 10;` `    ``}` `    ``while` `(tempB != 0) {` `        ``Bdigits++;` `        ``tempB /= 10;` `    ``}`   `    ``// Now compare both the digits with` `    ``// adding zeroes` `    ``if` `(Adigits + z1 > Bdigits + z2) {` `        ``return` `">"``;` `    ``}` `    ``else` `if` `(Adigits + z1 < Bdigits + z2) {` `        ``return` `"<"``;` `    ``}`   `    ``// If both condition are not true means` `    ``// they have equal digits So now add zeroes` `    ``// in smaller digit number to make equal` `    ``// digits number as larger`   `    ``if` `(Adigits > Bdigits) {` `        ``int` `addzeroes = Adigits - Bdigits;` `        ``b *= ``pow``(10, addzeroes);` `    ``}` `    ``else` `{` `        ``int` `addzeroes = Bdigits - Adigits;` `        ``a *= ``pow``(10, addzeroes);` `    ``}` `    ``if` `(a == b) {` `        ``return` `"="``;` `    ``}` `    ``else` `if` `(a > b) {` `        ``return` `">"``;` `    ``}` `    ``else` `{` `        ``return` `"<"``;` `    ``}` `}`   `// Driver Code` `int` `main()` `{`   `    ``int` `a = 20, z1 = 2;` `    ``int` `b = 200, z2 = 1;` `    ``string ans = CompareNumbers(a, b, z1, z2);` `    ``cout << ``"A "` `<< ans << ``" B"``;` `    ``return` `0;` `}`

## Java

 `// Java program for the above approach` `class` `GFG {`   `  ``// Function to compare 2 numbers A and B` `  ``static` `String CompareNumbers(``int` `a, ``int` `b,` `                               ``int` `z1, ``int` `z2) {`   `    ``// Calculate number of digits` `    ``// in both the numbers` `    ``int` `Adigits = ``0``, Bdigits = ``0``;` `    ``int` `tempA = a, tempB = b;`   `    ``while` `(tempA != ``0``) {` `      ``Adigits++;` `      ``tempA /= ``10``;` `    ``}` `    ``while` `(tempB != ``0``) {` `      ``Bdigits++;` `      ``tempB /= ``10``;` `    ``}`   `    ``// Now compare both the digits with` `    ``// adding zeroes` `    ``if` `(Adigits + z1 > Bdigits + z2) {` `      ``return` `">"``;` `    ``} ``else` `if` `(Adigits + z1 < Bdigits + z2) {` `      ``return` `"<"``;` `    ``}`   `    ``// If both condition are not true means` `    ``// they have equal digits So now add zeroes` `    ``// in smaller digit number to make equal` `    ``// digits number as larger`   `    ``if` `(Adigits > Bdigits) {` `      ``int` `addzeroes = Adigits - Bdigits;` `      ``b *= (``int``) Math.pow(``10``, addzeroes);` `    ``} ``else` `{` `      ``int` `addzeroes = Bdigits - Adigits;` `      ``a *= (``int``) Math.pow(``10``, addzeroes);` `    ``}` `    ``if` `(a == b) {` `      ``return` `"="``;` `    ``} ``else` `if` `(a > b) {` `      ``return` `">"``;` `    ``} ``else` `{` `      ``return` `"<"``;` `    ``}` `  ``}`   `  ``// Driver Code` `  ``public` `static` `void` `main(String args[]) {`   `    ``int` `a = ``20``, z1 = ``2``;` `    ``int` `b = ``200``, z2 = ``1``;` `    ``String ans = CompareNumbers(a, b, z1, z2);` `    ``System.out.println(``"A "` `+ ans + ``" B"``);` `  ``}` `}`   `// This code is contributed by gfgking`

## Python3

 `# Python code for the above approach `   `# Function to compare 2 numbers A and B` `def` `CompareNumbers(a, b, z1, z2):`   `    ``# Calculate number of digits` `    ``# in both the numbers` `    ``Adigits ``=` `0` `    ``Bdigits ``=` `0` `    ``tempA ``=` `a` `    ``tempB ``=` `b`   `    ``while` `(tempA !``=` `0``):` `        ``Adigits ``+``=` `1` `        ``tempA ``=` `tempA ``/``/` `10` `    ``while` `(tempB !``=` `0``):` `        ``Bdigits ``+``=` `1` `        ``tempB ``=` `tempB ``/``/` `10`   `    ``# Now compare both the digits with` `    ``# adding zeroes` `    ``if` `(Adigits ``+` `z1 > Bdigits ``+` `z2):` `        ``return` `">"``;` `    ``elif` `(Adigits ``+` `z1 < Bdigits ``+` `z2):` `        ``return` `"<"``;`   `    ``# If both condition are not true means` `    ``# they have equal digits So now add zeroes` `    ``# in smaller digit number to make equal` `    ``# digits number as larger` `    ``if` `(Adigits > Bdigits):` `        ``addzeroes ``=` `Adigits ``-` `Bdigits;` `        ``b ``*``=` `(``10` `*``*` `addzeroes)` `    ``else``:` `        ``addzeroes ``=` `Bdigits ``-` `Adigits;` `        ``a ``*``=` `(``10` `*``*` `addzeroes)` `    ``if` `(a ``=``=` `b):` `        ``return` `"="``;` `    ``elif` `(a > b):` `        ``return` `">"``;` `    ``else``:` `        ``return` `"<"``;`   `# Driver Code` `a ``=` `20` `z1 ``=` `2``;` `b ``=` `200` `z2 ``=` `1``;` `ans ``=` `CompareNumbers(a, b, z1, z2);` `print``(``"A "` `+` `ans ``+` `" B"``);`   `# This code is contributed by gfgking`

## C#

 `// C# program for the above approach` `using` `System;` `class` `GFG` `{` `  `  `// Function to compare 2 numbers A and B` `static` `string` `CompareNumbers(``int` `a, ``int` `b,` `                      ``int` `z1, ``int` `z2)` `{`   `    ``// Calculate number of digits` `    ``// in both the numbers` `    ``int` `Adigits = 0, Bdigits = 0;` `    ``int` `tempA = a, tempB = b;`   `    ``while` `(tempA != 0) {` `        ``Adigits++;` `        ``tempA /= 10;` `    ``}` `    ``while` `(tempB != 0) {` `        ``Bdigits++;` `        ``tempB /= 10;` `    ``}`   `    ``// Now compare both the digits with` `    ``// adding zeroes` `    ``if` `(Adigits + z1 > Bdigits + z2) {` `        ``return` `">"``;` `    ``}` `    ``else` `if` `(Adigits + z1 < Bdigits + z2) {` `        ``return` `"<"``;` `    ``}`   `    ``// If both condition are not true means` `    ``// they have equal digits So now add zeroes` `    ``// in smaller digit number to make equal` `    ``// digits number as larger`   `    ``if` `(Adigits > Bdigits) {` `        ``int` `addzeroes = Adigits - Bdigits;` `        ``b *= (``int``)Math.Pow(10, addzeroes);` `    ``}` `    ``else` `{` `        ``int` `addzeroes = Bdigits - Adigits;` `        ``a *= (``int``)Math.Pow(10, addzeroes);` `    ``}` `    ``if` `(a == b) {` `        ``return` `"="``;` `    ``}` `    ``else` `if` `(a > b) {` `        ``return` `">"``;` `    ``}` `    ``else` `{` `        ``return` `"<"``;` `    ``}` `}`   `// Driver Code` `public` `static` `void` `Main()` `{`   `    ``int` `a = 20, z1 = 2;` `    ``int` `b = 200, z2 = 1;` `    ``string` `ans = CompareNumbers(a, b, z1, z2);` `    ``Console.Write(``"A "` `+ ans + ``" B"``);` `}` `}`   `// This code is contributed by Samim Hossain Mondal.`

## Javascript

 ``

Output

`A = B`

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Related Articles