Trong bài viết này, chúng ta sẽ thảo luận về một chương trình để tìm một số nguyên ‘k’, sao cho mô đun của nó với mỗi phần tử của một mảng nhất định là như nhau.
Ví dụ:giả sử chúng ta đã được cung cấp một mảng,
arr = {12, 22, 32}
Khi đó, chúng ta có giá trị đầu ra là k =1, 2, 5, 10.
Lấy trường hợp của hai giá trị trong mảng ‘x’ và ‘y’ (x> y). Khi đó ta có (y + chênh lệch)% k =y% k. Giải quyết vấn đề này chúng tôi nhận được,
difference%k = 0
Vì vậy, chúng tôi sẽ tìm tất cả các ước số cho sự khác biệt của phần tử lớn nhất và nhỏ nhất trong mảng và sau đó kiểm tra từng ước số xem phần còn lại có giống nhau hay không đối với mọi phần tử trong mảng.
Ví dụ
#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; }
Đầu ra
The values of K : 1 2 10 5