在本教程中,我们将解决以下问题。
给定一个整数数组,我们必须找到两个数字A和B。数组中所有剩余的数字都是A和B的除数。
如果数字是A和B的除数,则它将在数组中出现两次。
让我们看看解决问题的步骤。
数组中的最大数字是A和B中的数字之一。假设它是A。
现在,B将是第二大数字或不是A除数的数字。
让我们看一下代码。
#include <bits/stdc++.h> using namespace std; void findTheDivisors(int arr[], int n) { sort(arr, arr + n); int A = arr[n - 1], B = -1; for (int i = n - 2; i > -1; i--) { if (A % arr[i] != 0) { B = arr[i]; break; } if (i - 1 >= 0 && arr[i] == arr[i - 1]) { B = arr[i]; break; } } cout << "A = " << A << ", B = " << B << endl; } int main() { int arr[] = { 3, 2, 3, 4, 12, 6, 1, 1, 2, 6 }; findTheDivisors(arr, 10); return 0; }输出结果
如果执行上述程序,则将得到以下结果。
A = 12, B = 6