समस्या विवरण
सबसे छोटी K-अंकीय संख्या जो X से विभाज्य हो, सूत्र का उपयोग करके विभाज्यता की जांच करके पाई जाती है। सूत्र निम्न तरीके से काम करता है:
- न्यूनतम K-अंकीय संख्या [min] की गणना करें, उदाहरण: 10, 100, 1000, आदि (10^(K-1))
- अब जांचें कि क्या min, X से विभाज्य है। यदि हां, तो यही उत्तर है
- यदि नहीं, तो (min + X) - ((min + X) % X) उत्तर है
उदाहरण
#include <iostream>
#include <cmath>
using namespace std;
long minKDigit(int k, int x) {
// k अंकों की न्यूनतम संख्या प्राप्त करें
long min = pow(10, k - 1);
if (min % x == 0) {
return min;
}
// अगला गुणक ढूंढें
return (min + x) - ((min + x) % x);
}
int main() {
int X = 83;
int K = 5;
cout << "The smallest " << K << " digit number divisible by " << X << " is ";
cout << minKDigit(K, X);
return 0;
}
आउटपुट
The smallest 5 digit number divisible by 83 is 100430
चरण-दर-चरण व्याख्या
उदाहरण: K=5, X=83
- न्यूनतम 5-अंकीय संख्या = 10^(5-1) = 10000
- 10000 % 83 = 10000 - 83×120 = 10000 - 9960 = 40 (विभाज्य नहीं)
- अगली संख्या = (10000 + 83) - ((10000 + 83) % 83)
- = 10083 - (10083 % 83)
- 10083 % 83 = 10083 - 83×121 = 10083 - 10043 = 40
- परिणाम = 10083 - 40 = 10043
- सत्यापन: 10043 / 83 = 121 ✓
सामान्य सूत्र
सबसे छोटी K-अंकीय संख्या = 10^(K-1) यदि (10^(K-1) % X == 0) तो उत्तर = 10^(K-1) अन्यथा उत्तर = 10^(K-1) + (X - (10^(K-1) % X))
अधिक उदाहरण
| K (अंक) | X (भाजक) | न्यूनतम K-अंकीय | परिणाम |
|---|---|---|---|
| 3 | 7 | 100 | 105 |
| 4 | 13 | 1000 | 1001 |
| 6 | 97 | 100000 | 100089 |
समय जटिलता
O(1) - स्थिर समय गणना
नोट
बड़े K के लिए, pow(10, k-1) ओवरफ्लो कर सकता है। long long या बिग इंटीजर लाइब्रेरी का उपयोग करें।