ধরুন আমাদের 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