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);
} |
Output:
10043
Please refer complete article on Smallest K digit number divisible by X for more details!
Recommended Articles
15. Generate a number such that the frequency of each digit is digit times the frequency in given number
16. Minimum N-Digit number required to obtain largest N-digit number after performing given operations