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

C++-এ সার্কুলার অ্যারে রোটেশন দিয়ে সর্বোচ্চ সংখ্যা তৈরি

আমাদের একটি সার্কুলার অ্যারে দেওয়া আছে (প্রথম এলিমেন্ট লাস্ট এলিমেন্টের পাশে)। প্রতিটি এলিমেন্টের ডিজিট কাউন্ট সমান বা ভিন্ন হতে পারে। লক্ষ্য হলো রোটেশন ব্যবহার করে সব সংখ্যা কনক্যাটেনেট করেই সর্বোচ্চ সংখ্যা বানানো। সবচেয়ে বড় লेफটমোস্ট ডিজিট যেটা, সেটি প্রথমে রাখা।

  • যদি সেটি প্রথমে থাকে, বাকিগুলো যেন আছে তেন থাকে।
  • যদি মাঝপথে থাকে (ইন্ডেক্স i), i+1 থেকে n-1 আগে, তারপর 0 থেকে i-1।
  • যদি লাস্টে থাকে, 0 থেকে i-1 পরে যুক্ত।

ইনপুট

Arr[] = { 121, 43, 65, 32 }

আউটপুট

Highest number: 653212143

ব্যাখ্যা: সর্বোচ্চ লেফটমোস্ট ডিজিট ৬ (৬৫-এ)। ৬৫ প্রথমে, তারপর ৩২, ১২১, ৪৩।

ইনপুট

Arr[] = { 1101, 9, 321, 77 }

আউটপুট

Highest number: 9321771101

ব্যাখ্যা: সর্বোচ্চ লেফটমোস্ট ডিজিট ৯। ৯ প্রথমে, তারপর ৩২১, ৭৭, ১১০১।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • arr[] অ্যারে।
  • Largest(int arr[], int n) ফাংশন প্রিন্ট করে।
  • maxx = 0, pos = 0 (সর্বোচ্চ লেফটমোস্ট ডিজিটের ইনডেক্স)।
  • প্রতিটি arr[i]-র লেফটমোস্ট ডিজিট বের করতে ১০ দিয়ে বারবার ভাগ করে রিমেইন্ডার নেওয়া (num==0 হলে সেটিই লেফটমোস্ট)۔
  • সর্বোচ্চ হলে maxx ও pos আপডেট।
  • pos থেকে n-1 প্রিন্ট, তারপর 0 থেকে pos-1 প্রিন্ট।

উদাহরণ কোড

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

void Largest(int arr[], int n){
    int maxx = 0, pos = 0;
    for (int i = 0; i < n; i++) {
        int num = arr[i];
        while (num != 0) {
            int rem = num % 10;
            num = num / 10;
            if (num == 0) {
                if (maxx < rem) { maxx = rem; pos = i; }
            }
        }
    }
    cout << "Largest number by concatenation: ";
    for (int i = pos; i < n; i++) cout << arr[i];
    for (int i = 0; i < pos; i++) cout << arr[i];
}

int main(){
    int Arr[] = { 12, 34, 56, 98 };
    int size = 4;
    Largest(Arr, size);
    return 0;
}

আউটপুট

Largest number by concatenation: 98123456
  1. অ্যারেতে প্রতিটি উপাদানের জন্য সবচেয়ে কাছের বড় মান খুঁজে বের করা C++-তে

  2. অ্যারেতে এমন মৌলিক সংখ্যা K খুঁজে বের করা যাতে (A[i] % K) সর্বোচ্চ হয় C++-তে

  3. সি++ প্রোগ্রাম: অ্যারেতে প্রতিটি উপাদানের জন্য সবচেয়ে নিকটবর্তী বড় মান (Closest Greater Value) খুঁজে বের করা

  4. সি++ প্রোগ্রাম: অ্যারেতে প্রতিটি উপাদানের জন্য সবচেয়ে নিকটবর্তী বড় মান (Closest Greater Value) খুঁজে বের করা