我们给了两个数组,假设arr_1 []和arr_2 []都包含整数值,任务是计算可被另一数组中的至少一个元素整除的元素数。这意味着我们需要在第二个数组arr_2中计算那些至少具有一个因子的元素。
数组是一种数据结构,可以存储相同类型的元素的固定大小的顺序集合。数组用于存储数据集合,但是将数组视为相同类型的变量集合通常会更有用。
Input − int arr_1[] = {1, 2, 3, 4, 5} arr_2[] = {2, 6, 12, 15}Output − count is 2
解释-arr_1 []中有5个元素,arr_2 []中有4个元素。arr_1 []中的所有元素都可以被arr_2 []整除。因此计数为5。
Input − int arr_1[] = {1, 2, 3, 4, 5} arr_2[] = {13, 11}Output − count is 0
解释-arr_1 []中有5个元素,arr_2 []中有2个元素。arr_1 []中的所有元素都不能被arr_2 []整除。因此计数为0。
创建两个数组,假设是arr_1 []和arr_2 []
使用该length()
函数计算两个数组的长度,该函数将根据数组中的元素返回一个整数值。
取一个临时变量来存储元素的数量。
假设我们创建一个unordered_set变量
i的起始循环为0,且i小于第二个数组的大小。
在循环内部,在arr_2 [i]中执行插入。
从i到0且i小于第一个数组的大小开始另一个循环。
在循环内部,为j to和j * j <= arr_1 [i]启动另一个循环
在此内部检查arr_1 [i]%j = 0,然后检查us.find(j)!= us.end或us.find(arr [i] / j)!= us.end()然后将计数增加1
否则,休息
返回计数
打印结果。
#include <iostream> #include <unordered_set> using namespace std; //计算元素数量的功能 //第一个数组中 //存在于第二个数组中 int totalelements(int arr_1[], int size1, int arr_2[], int size2){ //变量“结果”以计算元素数量 int result = 0; //第二个数组元素的哈希 unordered_set<int> h; for (int i = 0; i < size2; i++){ h.insert(arr_2[i]); } //遍历数组元素 //并找到其因素 for (int i = 0; i < size1; i++){ for (int j = 1; j * j <= arr_1[i]; j++){ if (arr_1[i] % j == 0){ //检查该因素是否存在 //第二个数组使用h- if ((h.find(j) != h.end()) || (h.find(arr_1[i] / j)!= h.end())){ result++; break; } } } } return result; } //主要功能 int main(){ int arr_1[] = { 1, 2, 3, 4, 5 }; int arr_2[] = { 2, 6, 12, 15 }; int size1 = sizeof(arr_1) / sizeof(arr_1[0]); int size2 = sizeof(arr_2) / sizeof(arr_2[0]); cout <<"count is "<<totalelements(arr_1, size1, arr_2, size2); return 0; }
输出结果
如果运行上面的代码,我们将获得以下输出-
count is 2