Given three positive integers X, Y, and Z. The task is to find two numbers A and B of X and Y digits respectively with their GCD having Z digits. where Z ≤ min(X, Y). If there are multiple possible answers print any of them.
Examples:
Input: X = 2, Y = 3, Z = 1
Output: A = 11, B = 100
Explanation: A and B contains 2 and 3 digits respectively and GCD(A, B) is 1 which has 1 digit.Input: X = 2, Y = 2, Z = 2
Output: A = 13, B = 26
Approach: The task can be solved using some observations. Calculate A equals 10x-1, B as 10y-1, and C as 10z-1. Increment A with C to achieve GCD with Z digits. Follow the below steps to solve the problem:
- Initialize 3 variables A, B, C with 1.
- Append Z -1 zeroes with C.
- Append X – 1 zeroes in last of A.
- Append Y – 1 zero in last of B.
- Increment A by the value of C.
- Print A and B as the answer.
Below is the implementation of the above approach:
// C++ program for the above approach #include <bits/stdc++.h> using namespace std;
// Function to find the desired numbers void findTwoNumbers( int X, int Y, int Z)
{ int A, B, C;
A = B = C = 1;
for ( int i = 1; i <= X - 1; i++) {
A = A * 10;
}
for ( int i = 1; i <= Y - 1; i++) {
B = B * 10;
}
for ( int i = 1; i <= Z - 1; i++) {
C = C * 10;
}
A = A + C;
cout << "A = " << A << " B = " << B;
} // Driver Code int main()
{ int X = 2, Y = 3, Z = 1;
findTwoNumbers(X, Y, Z);
return 0;
} |
// Java program for the above approach import java.io.*;
public class GFG {
// Function to find the desired numbers
static void findTwoNumbers( int X, int Y, int Z) {
int A, B, C;
A = B = C = 1 ;
for ( int i = 1 ; i <= X - 1 ; i++) {
A = A * 10 ;
}
for ( int i = 1 ; i <= Y - 1 ; i++) {
B = B * 10 ;
}
for ( int i = 1 ; i <= Z - 1 ; i++) {
C = C * 10 ;
}
A = A + C;
System.out.println( "A = " + A + " B = " + B);
}
// Driver Code
public static void main(String args[]) {
int X = 2 , Y = 3 , Z = 1 ;
findTwoNumbers(X, Y, Z);
}
} // This code is contributed by Saurabh Jaiswal |
# python3 program for the above approach # Function to find the desired numbers def findTwoNumbers(X, Y, Z):
A = B = C = 1
for i in range ( 1 , X):
A = A * 10
for i in range ( 1 , Y):
B = B * 10
for i in range ( 1 , Z):
C = C * 10
A = A + C
print (f "A = {A} B = {B}" )
# Driver Code if __name__ = = "__main__" :
X, Y, Z = 2 , 3 , 1
findTwoNumbers(X, Y, Z)
# This code is contributed by rakeshsahni
|
// C# program for the above approach using System;
public class GFG
{ // Function to find the desired numbers static void findTwoNumbers( int X, int Y, int Z)
{ int A, B, C;
A = B = C = 1;
for ( int i = 1; i <= X - 1; i++) {
A = A * 10;
}
for ( int i = 1; i <= Y - 1; i++) {
B = B * 10;
}
for ( int i = 1; i <= Z - 1; i++) {
C = C * 10;
}
A = A + C;
Console.Write( "A = " + A + " B = " + B);
} // Driver Code public static void Main()
{ int X = 2, Y = 3, Z = 1;
findTwoNumbers(X, Y, Z);
} } // This code is contributed by Samim Hossain Mondal. |
<script> // JavaScript code for the above approach
// Function to find the desired numbers
function findTwoNumbers(X, Y, Z) {
let A, B, C;
A = B = C = 1;
for (let i = 1; i <= X - 1; i++) {
A = A * 10;
}
for (let i = 1; i <= Y - 1; i++) {
B = B * 10;
}
for (let i = 1; i <= Z - 1; i++) {
C = C * 10;
}
A = A + C;
document.write( "A = " + A + " B = " + B);
}
// Driver Code
let X = 2, Y = 3, Z = 1;
findTwoNumbers(X, Y, Z);
// This code is contributed by Potta Lokesh
</script> |
A = 11 B = 100
Time Complexity: O(max(X, Y))
Auxiliary Space: O(1)