Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับสมาชิกที่ความต่างสัมบูรณ์กับผลรวมสมาชิกอื่นๆ มากกว่า k ใน C++

ได้รับอาร์เรย์จำนวนเต็ม ต้องการนับจำนวนสมาชิกที่ความต่างสัมบูรณ์ระหว่างผลรวมของสมาชิกอื่นทั้งหมดกับสมาชิกตัวนั้น มากกว่า 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