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

C++ প্রোগ্রাম: 'k' বের করা যাতে অ্যারে সব উপাদানের সাথে মডুলাস সমান


একটি ইন্টিজার k খুঁজে বের করতে হবে যাতে অ্যারে arr[]-এর সব উপাদানের সাথে k দিয়ে মডুলাস (remainder) একই থাকে।

গাণিতিক বিষয়ক

দুটি উপাদান x > y হলে: (y + diff) % k = y % k → diff % k = 0।
সুতরাং k হবে max(arr) - min(arr) এর যেকোনো ডিভাইসর।

অ্যালগরিদম

  1. অ্যারে সর্ট করুন, diff = arr[n-1] - arr[0]।
  2. diff-এর সব ডিভাইসর বের করুন।
  3. প্রতিটি ডিভাইসর k এর জন্য চেক করুন: সব arr[i] % k সমান কিনা।

C++ কোড উদাহরণ

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

void findK(int arr[], int n) {
    sort(arr, arr+n);
    int diff = arr[n-1] - arr[0];
    vector<int> divs;
    for (int i=1; i*i<=diff; i++) {
        if (diff%i==0) {
            divs.push_back(i);
            if (i != diff/i) divs.push_back(diff/i);
        }
    }
    for (int k : divs) {
        int rem = arr[0] % k;
        bool ok = true;
        for (int i=1; i

আউটপুট

Values of K: 1 2 5 10
  1. অ্যারে উপাদানগুলোর সারপাসার (Surpasser) কাউন্ট (C++)

  2. C++ প্রোগ্রাম: ইউনিক পেয়ার বের করা যারা N-র চোয় ছোট ও শর্ত পূরণ করে

  3. C++ প্রোগ্রাম: অ্যারে পার্টিশনিং মেথড দিয়ে kth সবচেয়ে ছোট এলিমেন্ট বের করা

  4. অ্যারেতে সবচেয়ে বড় এলিমেন্ট (Largest Element) বের করার C++ প্রোগ্রাম