정수 값을 포함하는 arr_1[] 및 arr_2[]라는 두 개의 배열이 제공되고 작업은 다른 배열의 하나 이상의 요소로 나눌 수 있는 요소의 수를 계산하는 것입니다. 그것은 우리가 두 번째 배열인 rr_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 OR us.find(arr[i]/j) !=us.end()인지 확인한 다음 카운트를 다음과 같이 증가시킵니다. 1
-
그렇지 않으면 중단
-
반품 횟수
-
결과를 인쇄하십시오.
예시
#include <iostream> #include <unordered_set> using namespace std; // Function to count the number of elements // in first array whose atleast one factor is // present in the second array int totalelements(int arr_1[], int size1, int arr_2[], int size2){ // variable 'result' to count the number of elements int result = 0; // Hash of second array elements unordered_set<int> h; for (int i = 0; i < size2; i++){ h.insert(arr_2[i]); } // traverse through array elements // and find its factors for (int i = 0; i < size1; i++){ for (int j = 1; j * j <= arr_1[i]; j++){ if (arr_1[i] % j == 0){ // check if the factor is present in // second array using the h if ((h.find(j) != h.end()) || (h.find(arr_1[i] / j)!= h.end())){ result++; break; } } } } return result; } // Main function 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