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

C++-এ দেওয়া সংখ্যা থেকে কম একটি সংখ্যা প্রিন্ট করা যাতে তার সব অঙ্ক ভিন্ন হয়

এই সমস্যায় একটি সংখ্যা n দেওয়া আছে। আমাদের n-এর চেয়ে কম সবচেয়ে বড় সংখ্যা প্রিন্ট করতে হবে যার সব অঙ্ক ভিন্ন হবে।

উদাহরণ

ইনপুট: n = 2332
আউটপুট: 2319

এই সমস্যাটি সমাধানের জন্য সংখ্যাগুলো উল্টো ক্রমে গণনা করা হবে (n থেকে 0 পর্যন্ত)। প্রতিটি সংখ্যা চেক করা হবে তার অঙ্কগুলো ভিন্ন কিনা। যদি শর্ত পূরণ করে, তবে সেটি প্রিন্ট করে লুপ শেষ করা হবে। লুপটি সর্বোচ্চ n বার চলবে।

বাস্তবায়ন

#include <bits/stdc++.h> 
using namespace std; 

int findDistinctDigitNumber(int n) { 
    for (int i = n - 1; i >= 0; i--) { 
        int count[10] = { 0 }; 
        int x = i; 
        int count1 = 0, count2 = 0; 
        while (x) { 
            count[x % 10]++; 
            x /= 10; 
            count1++; 
        } 
        for (int j = 0; j < 10; j++) { 
            if (count[j] == 1) 
                count2++; 
        } 
        if (count1 == count2) 
            return i; 
    } 
    return -1; 
} 

int main() { 
    int n = 44324; 
    cout << "Number less than " << n << " with all digits distinct are : " << findDistinctDigitNumber(n); 
    return 0; 
}

আউটপুট

Number less than 44324 with all digits distinct are : 43987
  1. C++-এ মিন হিপে নির্দিষ্ট মান x থেকে ছোট সব নোড প্রিন্ট করা

  2. C++ ব্যবহার করে অ্যারেতে এমন এলিমেন্ট বের করা যেটি সব এলিমেন্টকে ভাগ করে দেয়

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

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