मान लीजिए कि हमारे पास 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 तत्वों के लॉग के योग से और फिर एंटीलॉग की छत से विभाजित करते हैं। परिणाम होगा।
रेस =छत (एंटीलॉग (लॉग (एक्स) / 10))
या रेस =छत(10 ^ (लॉग(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