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

অ্যারে প্রোডাক্ট বড় করতে সব উপাদানকে ন্যূনতম ভ্যালু অ্যাসাইন করা C++-তে


মনে করুন আমাদের n উপাদানের একটি অ্যারে আছে। অ্যারেতে সব উপাদানকে কিছু ন্যূনতম মান x-এ আপডেট করতে হবে, যেন arr[i] = x। যেন নতুন অ্যারেতে সব উপাদানগুলোর গুণফল কঠোরভাবে প্রাথমিক অ্যারেতে সব উপাদানগুলোর গুণফলের চেয়ে বড় হয়, যেখানে i <= arr[i] <= 10^10, এবং 1 <= n <= 10^5। তাই যদি অ্যারেটি হয় [4, 2, 1, 10, 6]। তাহলে 4 হল সর্বনিম্ন উপাদান। 4 * 4 * 4 * 4 * 4 > 4 * 2 * 1 * 10 * 6

যেহেতু আমরা জানি n উপাদানের গুণফল P। যদি P-এর n-তম রুট বের করতে হয়, তবে n-তম রুট বের করার জন্য, আমরা সহজেই n দিয়ে অ্যারেতে n উপাদানের লগের যোগফল ভাগ করব এবং তারপর সিলিং অফ অ্যান্টিলগ ফলাফল হবে।

res = ceil(antilog(log(x) / 10))

অথবা res = ceil(10 ^ (log(x) / 10))

উদাহরণ

#include <iostream>
#include <cmath>
#define EPS 1e-15
using namespace std;

long long findMinValue(long long arr[], long long n) {
    long double sum = 0;
    for (int i = 0; i < n; i++)
        sum += (long double)log10(arr[i]) + EPS;
    long double xl = (long double)(sum / n + EPS);
    long double res = pow((long double)10.0, (long double)xl) + EPS;
    return (long long)ceil(res + EPS);
}

int main() {
    long long arr[] = {4, 2, 1, 10, 6};
    long long n = sizeof(arr) / sizeof(arr[0]);
    cout << "Min value is: " << findMinValue(arr, n);
}

আউটপুট

Min value is: 4

  1. C++ ব্যবহার করে অ্যারের সব এলিমেন্ট ০ করার ন্যূনতম অপারেশন সংখ্যা

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

  3. C++ ব্যবহার করে অ্যারেতে a % b = k সেটি করার সব জোড়া (a, b) বের করা

  4. C++-এ অ্যারের সব এলিমেন্ট একই করার জন্য ন্যূনতম ডিলিট অপারেশন