কম্পিউটার টিউটোরিয়াল

C++-এ ছোট K-অঙ্কের সংখ্যা যা X দ্বারা বিভাজ্য (Smallest K digit number divisible by X)


এই সমস্যায় আমরা সবচেয়ে ছোট K-অঙ্কের সংখ্যা খুঁজে বের করার চেষ্টা করব যা X দ্বারা বিভাজ্য। এই কাজ করতে আমরা (10^(k-1)) ফর্মুলা দিয়ে সবচেয়ে ছোট K-অঙ্কের সংখ্যা নিব। তারপর চেক করব সংখ্যাটি X দ্বারা বিভাজ্য কিনা, যদি না হয়, তবে নিচের ফর্মুলা দিয়ে সঠিক সংখ্যা বের করব।

(min + X) - ((min + X) mod X)

একটি উদাহরণ: ৫-অঙ্কের সংখ্যা যা ২৯ দ্বারা বিভাজ্য। সবচেয়ে ছোট ৫-অঙ্কের সংখ্যা 10000। এটি ২৯ দ্বারা বিভাজ্য নয়। এখন ফর্মুলা প্রয়োগ করলে পাব:

(10000 + 29) - ((10000 + 29) mod 29) = 10029 - 24 = 10005

সংখ্যা 10005, ২৯ দ্বারা বিভাজ্য।

অ্যালগরিদম

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

  1. C++ প্রোগ্রাম: হেক্সাডেসিমেল থেকে ডেসিমেল কনভার্সন

  2. C++-এ ডেসিমেল থেকে হেক্সাডেসিমেল কনভার্সন প্রোগ্রাম

  3. C++-এ ডেসিমেল থেকে বাইনারি কনভার্সন প্রোগ্রাম

  4. পাইথনে X দিয়ে বিভাজ্য সবচেয়ে ছোট K-ডিজিট নম্বর বের করা