इस लेख में, हम एक पूर्णांक 'k' को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे, जैसे कि किसी दिए गए सरणी के प्रत्येक तत्व के साथ इसका मापांक समान हो।
उदाहरण के लिए, मान लें कि हमें एक सरणी दी गई है,
arr = {12, 22, 32}
तब हमारे पास k =1, 2, 5, 10 का आउटपुट मान होता है।
सरणी 'x' और 'y' (x>y) में दो मानों का मामला लें। तब हमारे पास (y+difference)%k =y%k होता है। इसे हल करने पर हमें मिलता है,
difference%k = 0
इसलिए, हम सरणी में अधिकतम और न्यूनतम तत्व के अंतर के लिए सभी भाजक पाएंगे और फिर प्रत्येक भाजक की जांच करेंगे कि शेष समान है या नहीं सरणी में प्रत्येक तत्व के लिए।
उदाहरण
#include<bits/stdc++.h> using namespace std; int equal_modulus (int arr[], int len) { sort(arr, arr + len); int diff = arr[len-1] - arr[0]; //vector to store all the divisors vector <int> divi; for (int i = 1; i*i <= diff; i++) { if (diff%i == 0) { divi.push_back(i); if (i != diff/i) divi.push_back(diff/i); } } //to check if remainder is equal for every element for (int i = 0; i < divi.size(); i++) { int temp = arr[0]%divi[i]; int j; for (j = 1; j < len; j++) if (arr[j] % divi[i] != temp) break; //to print the values of k if (j == len) cout << divi[i] <<" "; } return 0; } int main() { int arr[] = {12, 22, 32}; int len = sizeof(arr)/sizeof(arr[0]); cout << "The values of K :" << endl; equal_modulus(arr, len); return 0; }
आउटपुट
The values of K : 1 2 10 5