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

C++-এ A-এ N অঙ্ক যোগ করে প্রতিটি যোগফলে B দ্বারা বিভাজ্য রাখা


এখানে আমরা দেখব কীভাবে একটি সংখ্যা A তৈরি করতে হয় N অঙ্ক যোগ করে, এবং প্রতিটি স্টেজে নতুন অঙ্ক যোগ করার সময় এটি অন্য একটি সংখ্যা B দ্বারা বিভাজ্য হবে। ধরি আমরা একটি ৫-অঙ্কের সংখ্যা তৈরি করতে যাচ্ছি ৪টি এক্সট্রা অঙ্ক যোগ করে। আমরা ৭ দ্বারা বিভাজ্যতা চেক করব। সংখ্যাটি ৮ থেকে শুরু হবে। তাই প্রথমে এটি ৪ যোগ করবে, তাহলে সংখ্যা হবে ৮৪, যা ৭ দ্বারা বিভাজ্য। তারপর ০ যোগ করলে সেটি ৭ দ্বারা বিভাজ্য থাকবে। যদি সংখ্যা জেনারেট করা না যায়, তবে এটি -1 রিটার্ন করবে।

অ্যালগরিদম

addNDigits(a, b, n)

begin
    num := a
    for all number x from 0 to 9, do
        temp := a * 10 + x
        if temp mod b is 0, then
            a := temp
            break
        end if
    done
    if num = a, then
        return -1
    end if
    add remaining 0's with a
    return a.
end

উদাহরণ

#include<iostream>
using namespace std;
int add_n_digits(int a, int b, int n) {
    int num = a;
    for (int i = 0; i <= 9; i++) { // সব ডিজিট (০-৯) যোগ করে টেস্ট
        int tmp = a * 10 + i;
        if (tmp % b == 0) {
            a = tmp; // যোগ করার পর a আপডেট
            break;
        }
    }
    if (num == a) // যদি কোনো ডিজিট যোগ না হয়, -1 রিটার্ন
        return -1;
    for (int j = 0; j < n - 1; j++) // বিভাজ্য সংখ্যা পাওয়ার পর ০ যোগ
        a *= 10;
    return a;
}
main() {
    int a, b, n;
    cout << "Enter A, B and N: ";
    cin >> a >> b >> n;
    int res = add_n_digits(a, b, n);
    if(res == -1) {
        cout << "Unable to get this type of number";
    } else {
        cout << "Result is " << res;
    }
}

আউটপুট

Enter A, B and N: 8 7 4 Result is 84000

আউটপুট

Enter A, B and N: 10 11 5 Unable to get this type of number

  1. C++ ব্যবহার করে এমন একটি সংখ্যা x বের করা যাতে x এবং তার ডিজিটের যোগফল n-র সমান হয়

  2. দেওয়া সংখ্যা n-এর জন্য x + x-এর অঙ্কের যোগফল = n এমন x খুঁজে বের করা C++-এ

  3. A-এ N অঙ্ক যোগ করা যাতে প্রতিটি যোগফলে B দ্বারা বিভাজ্য হয়

  4. C++-এ একটি শব্দকে প্যালিনড্রোম (Palindrome) পার্টিশন করার উপায় গণনা