কম্পিউটার

C++ এ সংখ্যার একই সেট সহ পরবর্তী বৃহত্তর সংখ্যা খুঁজুন


এই সমস্যায়, আমাদের একটি উপাদান N দেওয়া হয়েছে। আমাদের একই সংখ্যার সেট সহ পরবর্তী বৃহত্তর সংখ্যাটি খুঁজে বের করতে হবে। আমাদের একই অঙ্কের ক্ষুদ্রতম সংখ্যাটি খুঁজে বের করতে হবে যা N এর চেয়ে বড়।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

N = "92534"

আউটপুট

92543

সমাধান পদ্ধতি

পরবর্তী বৃহত্তর উপাদানটি খুঁজে পেতে সমস্যার একটি সহজ সমাধান হল নিম্নলিখিত পদ্ধতি -

  • সংখ্যাটিকে সর্বনিম্ন উল্লেখযোগ্য বিট থেকে সর্বাধিক উল্লেখযোগ্য বিটে অতিক্রম করুন৷ এবং যখন বর্তমান উপাদানটি শেষ উপাদানের চেয়ে ছোট হয় তখন থামুন৷

  • এই পরে অবশিষ্ট অ্যারের ক্ষুদ্রতম উপাদান জন্য অনুসন্ধান. এবং সবচেয়ে ছোট সংখ্যাটি খুঁজুন এবং সংখ্যার সাথে এটি অদলবদল করুন।

  • তারপর অবশিষ্ট সাবয়ারে সাজান এবং আউটপুট ফেরত দিন।

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

উদাহরণ

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
void findNextGreater(char number[], int n) {
   int i, j;
   for (i = n-1; i > 0; i--)
      if (number[i] > number[i-1])
         break;
   if (i==0) {
      cout<<"Next number is not possible";
      return;
   }
   int x = number[i-1], smallest = i;
   for (j = i+1; j < n; j++)
      if (number[j] > x && number[j] < number[smallest])
         smallest = j;
   char temp = number[smallest];
   number[smallest] = number[i-1];
   number[i-1] = temp;
   sort(number + i, number + n);
   cout<<number;
   return;
}
int main(){
   char number[] = "92534";
   int n = strlen(number);
   cout<<"The next number with same set of digits is ";
   findNextGreater(number, n);
   return 0;
}

আউটপুট

The next number with same set of digits is 92543

  1. C++ এ সংখ্যার একই সেট সহ N-এর চেয়ে ছোট সংখ্যাটি খুঁজুন

  2. C++ এ একই সংখ্যক সেট বিট সহ সংলগ্ন অ্যারে উপাদানের সর্বাধিক সংখ্যা

  3. C++ এ প্রদত্ত সংখ্যার চেয়ে বড় পরবর্তী নিখুঁত বর্গ খুঁজুন

  4. C++ এ D দ্বারা বিভাজ্য N সংখ্যার সংখ্যা খুঁজুন