In this tutorial, we are going to write a program that finds the largest n-digit number that is divisible by the given three numbers.
Let's see the steps to solve the problem.
- Initialise three numbers along with n.
- Find the LCM of three numbers.
- Store the largest number with n-digits.
- If the largest number is divisible by n, then return it.
- Else check for the number obtained from subtracting remainder in the above step.
Example
Let's see the code.
#include <bits/stdc++.h>
using namespace std;
int LCM(int x, int y, int z) {
int ans = ((x * y) / (__gcd(x, y)));
return ((z * ans) / (__gcd(ans, z)));
}
int findNumber(int n, int x, int y, int z) {
int lcm = LCM(x, y, z);
int largestNDigitNumber = pow(10, n) - 1;
int remainder = largestNDigitNumber % lcm;
if (remainder == 0) {
return largestNDigitNumber;
}
largestNDigitNumber -= remainder;
if (largestNDigitNumber >= pow(10, n - 1)) {
return largestNDigitNumber;
}
return 0;
}
int main() {
int n = 4, x = 6, y = 7, z = 8;
int result = findNumber(n, x, y, z);
if (result != 0) {
cout << result << endl;
}else {
cout << "Not possible" << endl;
}
return 0;
}Output
If you run the above code, then you will get the following result.
9912
Conclusion
If you have any queries in the tutorial, mention them in the comment section.