ได้รับอาร์เรย์จำนวนเต็ม ต้องการนับจำนวนสมาชิกที่ความต่างสัมบูรณ์ระหว่างผลรวมของสมาชิกอื่นทั้งหมดกับสมาชิกตัวนั้น มากกว่า k
สูตร
ผลรวมทั้งหมด = sum
สำหรับสมาชิก arr[i]: ผลรวมของสมาชิกอื่น = sum - arr[i]
ความต่างสัมบูรณ์ = |(sum - arr[i]) - arr[i]| = |sum - 2×arr[i]|
เงื่อนไข: |sum - 2×arr[i]| > k
ตัวอย่าง
อินพุต: arr[] = {1, 2, 3, 0, 3, 2, 0, 1}, k = 10
เอาต์พุต: 2
คำอธิบาย: sum = 12, ตรวจสอบแต่ละตัว: 12-2(1)=10, 12-2(2)=8, 12-2(3)=6, 12-2(0)=12 → มีแค่ 0 ให้ผลลัพธ์ 12 > 10 (มี 2 ตัว)
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int numberCount(int arr[], int n, int k) {
int count = 0;
int sum = 0;
for (int 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