在C ++中与所有其他元素的和的绝对差大于k的元素数
我们得到了一个整数数组。目的是对数字进行计数,以使所有元素之和与该元素之和的绝对差大于变量k。
我们将通过获取数组元素的总和来实现。现在对于每个元素arr[i],检查是否-
sum-2(arr[i])>k,因为sum已包含arr[i],因此将其减去两次。如果为真,则递增计数。
让我们通过示例来理解。
输入−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个元素(0s),条件为true。
输入−arr[]={1,1,1,1,1}k=10
输出-元素数:0
说明-元素总数为5
对于每个15-1-1=3<10。
以下程序中使用的方法如下
我们采用以随机数初始化的整数数组arr[]。
函数numberCount(intarr[],intn,intk)以数组及其长度为输入,并返回与所有其他元素之和的绝对差大于k的元素的计数
将初始计数设为0。
计算数组所有元素的总和。
现在从i=0到i<n遍历整个数组。
对于每个元素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