এই সমস্যায় আমরা ক্ষুদ্রতম K-সংখ্যার সংখ্যা খুঁজে বের করার চেষ্টা করব, যেটি X দ্বারা বিভাজ্য হবে। এই কাজটি করার জন্য আমরা এই সূত্র (10^(k-1)) দ্বারা ক্ষুদ্রতম K সংখ্যার সংখ্যাটি নেব। তারপর পরীক্ষা করুন সংখ্যাটি X দ্বারা বিভাজ্য কি না, যদি না হয়, আমরা এই সূত্রটি ব্যবহার করে সঠিক সংখ্যাটি পাব।
(min+ 𝑋)−((min+ 𝑋) 𝑚𝑜𝑑 𝑋)
একটি উদাহরণ হল একটি 5-সংখ্যার সংখ্যার মতো, যা 29 দ্বারা বিভাজ্য। সুতরাং সবচেয়ে ছোট 5-অঙ্কের সংখ্যাটি হল 10000। এটি 29 দ্বারা বিভাজ্য নয়। এখন সূত্রটি প্রয়োগ করলে আমরা পাব −
(10000+ 29)−((10000+29) 𝑚𝑜𝑑 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) { //get the minimum number of k digits 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