Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 다른 모든 요소의 합과 절대 차이가 k보다 큰 요소의 개수

<시간/>

정수 배열이 제공됩니다. 목표는 모든 요소의 합과 해당 요소의 절대 차이가 변수 k보다 크도록 숫자를 계산하는 것입니다.

배열 요소의 합을 구하여 이를 수행합니다. 이제 각 요소 arr[i]에 대해 −

를 확인합니다.

sum-2(arr[i])>k, sum에는 이미 arr[i]가 포함되어 있으므로 두 번 뺍니다. true인 경우 카운트가 증가합니다.

예를 들어 이해합시다.

입력 - arr[]={ 1,2,3,0,3,2,0,1 }, k=10

출력 − 요소 수:2

설명 − 요소의 합은 12입니다.

12-1-1=10, 12-2-2=8, 12-3-3=6, 12-0-0=12.

단 12> 10이므로 2개의 요소(0)에 대해 조건이 참입니다.

입력 - arr[]={ 1,1,1,1,1 } k=10

출력 − 요소 수:0

설명 − 요소의 합은 5입니다.

각 1 5-1-1=3 <10 .

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 임의의 숫자로 초기화된 정수 배열 arr[]을 사용합니다.

  • 함수 numberCount(int arr[], int n, int k)는 배열과 그 길이를 입력으로 받아 다른 모든 요소의 합과 절대 차이가 k보다 큰 요소의 개수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • 배열의 모든 요소의 합을 합으로 계산합니다.

  • 이제 i=0에서 i까지 전체 배열을 trvaser

  • 각 요소 arr[i]에 대해 sum-arr[i]-arr[i]>k이면 카운트를 증가시킵니다.

  • 최종 결과로 루프의 끝에서 카운트를 반환합니다.

예시

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int numberCount(int arr[],int n, int k){
   int count=0;
   int sum=0;
   int i;
   for(i=0;i<n;i++)
      { sum+=arr[i]; }
   for(int i=0;i<n;i++){
      if( abs(sum-arr[i]-arr[i]) > k ){
         count++;
      }
   }
   return count;
}
int main(){
   int Arr[]={ 1,2,3,4 };
   int len=sizeof(Arr)/sizeof(Arr[0]);
   int K=5;
   cout<<endl<<"Count of elements: "<<numberCount(Arr,len,K);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of elements: 2