Integers X and K are given. The task is to find the smallest K-digit number divisible by X.
Examples:
Input : X = 83, K = 5 Output : 10043 10040 is the smallest 5 digit number that is multiple of 83. Input : X = 5, K = 2 Output : 10
An efficient solution would be :
Compute MIN : smallest K-digit number (1000...K-times) If, MIN % X is 0, ans = MIN else, ans = (MIN + X) - ((MIN + X) % X)) This is because there will be a number in range [MIN...MIN+X] divisible by X.
// CPP code to find smallest K-digit number // divisible by X #include <bits/stdc++.h> using namespace std; // Function to compute the result int answer( int X, int K) { // Computing MIN int MIN = pow (10, K - 1); // MIN is the result if (MIN % X == 0) return MIN; // returning ans return ((MIN + X) - ((MIN + X) % X)); } // Driver int main() { // Number whose divisible is to be found int X = 83; // Max K-digit divisible is to be found int K = 5; cout << answer(X, K); } |
10043
Please refer complete article on Smallest K digit number divisible by X for more details!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!