इस समस्या में हम सबसे छोटी K-अंकों की संख्या खोजने का प्रयास करेंगे, जो X से विभाज्य हो। ऐसा करने के लिए हम इस सूत्र (10^(k-1)) द्वारा सबसे छोटी K अंकों की संख्या लेंगे। फिर जांचेंगे कि क्या संख्या X से विभाज्य है या नहीं, यदि नहीं, तो हम इस सूत्र का उपयोग करके सटीक संख्या प्राप्त करेंगे।
(min+ X)−((min+ X) mod X)
एक उदाहरण 5 अंकों की संख्या की तरह है, जो 29 से विभाज्य है। तो सबसे छोटी 5 अंकों की संख्या 10000 है। यह 29 से विभाज्य नहीं है। अब सूत्र लागू करके हम प्राप्त करेंगे:
(10000+ 29)−((10000+29) mod 29)=10029−24=10005
संख्या 10005, 29 से विभाज्य है।
एल्गोरिदम
minKDigit(k, x)
begin
min = 10 ^ (k-1)
if min is divisible by x, return min
otherwise return (min + x) – ((min + x) mod x)
end
उदाहरण
#include<iostream>
#include<cmath>
using namespace std;
long min_k_digit(int k, int x) {
//k अंकों की न्यूनतम संख्या प्राप्त करें
int min = pow(10, k-1);
if(min % x == 0) {
return min;
}
return (min + x) - ((min + x) % x);
}
main() {
int k, x;
cout << "Enter Digit Count(K) and Divisor(N): ";
cin >> k >> x;
cout << "Result is: " << min_k_digit(k, x);
}
आउटपुट
Enter Digit Count(K) and Divisor(N): 5 29 Result is: 10005
आउटपुट
Enter Digit Count(K) and Divisor(N): 6 87 Result is: 100050