Cho một mảng số nguyên a, bạn hãy tính tổng tất cả các số có giá trị lớn hơn trung bình cộng của dãy. Nếu không có số nào thỏa đề, hãy trả về -1 Ví dụ: Với a = [1,2,3,4,5] thì kết quả sum_numbers_larger_avarage(a) = 9 Giải thích: Ta có trung bình cộng của dãy là 3 Các số có giá trị lớn hơn trung bình cộng là: [4, 5] Nên tổng sẽ là 9 Đầu vào/Đầu ra: [Thời gian chạy] 0.5s với C++, 3s với Java và C#, 4s với Python, Go và JavaScript. [Đầu vào] array of integer a. 1 ≤ a.size ≤ 105 |a[i]| ≤ 106 [Đầu ra] integer. Kết quả thỏa mãn đề

2 câu trả lời

int sumNumbersLargerAverage(std::vector<int> a)
{   int sum=0;
    int d=0;
    int c=0;
for (int i=0; i<a.size(); i=i+1){
    if (a[i]>=0){
        c=c+a[i];}}
    
    for (int i=0;i<a.size(); i=i+1){
        if (c>=0){
            d=c/a.size();}}
    for (int i=0; i<a.size(); i=i+1){
        if (a[i]>d){
            sum=sum+a[i];
        }
    } 
    if (sum==0){ return -1;}
    else {return sum;}
}

C# nhé.

using System;

namespace Console___Nháp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Nhap so luong phan tu: ");
            byte n = byte.Parse(Console.ReadLine());
            byte[] arr = new byte[105];
            int tong = 0;
            int tongkq = 0;
            for (int i = 0; i <= n-1; i++)
            {
                Console.Write("Nhap gia tri cho phan tu thu {0}: ",i+1);
                arr[i] = byte.Parse(Console.ReadLine());
                tong += arr[i];
            }
            for (int i = 0; i <= n - 1; i++)
            {
                tongkq += (arr[i] > tong / n ? arr[i] : 0);
            }
            Console.WriteLine(tongkq);
            Console.ReadLine();
        }
    }
}

Câu hỏi trong lớp Xem thêm