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

C++-এ ডিভাইজার লিস্ট থেকে A এবং B বের করা

একটি পূর্ণসংখ্যা অ্যারে দেওয়া থাকলে, যেটি দুটি সংখ্যা A এবং B-এর সব ডিভাইজার ধারণ করে। যদি কোনো সংখ্যা A এবং B উভয়ের ডিভাইজার হয়, তবে সেটি দুবার থাকবে। A এবং B বের করতে হবে।

পদ্ধতি

  • অ্যারে সর্ট করুন।
  • সর্বোচ্চ মান হবে A।
  • পিছন থেকে স্ক্যান করুন: প্রথম যে সংখ্যা A-কে ভাগ করে না, বা ডুপ্লিকেট পাওয়া যায়, সেটি হবে B।

উদাহরণ

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

void findAB(int arr[], int n) {
    sort(arr, arr+n);
    int A = arr[n-1], B = -1;
    for (int i = n-2; i >= 0; i--) {
        if (A % arr[i] != 0) { B = arr[i]; break; }
        if (i > 0 && arr[i] == arr[i-1]) { B = arr[i]; break; }
    }
    cout << "A = " << A << ", B = " << B << endl;
}

int main() {
    int arr[] = {3,2,3,4,12,6,1,1,2,6};
    findAB(arr, 10);
    return 0;
}

আউটপুট

A = 12, B = 6
  1. ২D ম্যাট্রিক্স থেকে লিঙ্কড লিস্ট তৈরি করা C++-তে (রিকার্সিভ পদ্ধতি)

  2. GCD(a^n, c) বের করা বড় সংখ্যা হ্যান্ডল করে (C++)

  3. লাভের শতাংশ এবং কস্ট দিয়ে বিক্রয় মূল্য বের করা C++-তে

  4. C++-এ সিংলি সার্কুলার লিংকড লিস্টে ন্যূনতম ও সর্বোচ্চ মান বের করা