Hướng dẫn giải của [200 đề thầy Đức] Bài 142: Tích của tổng trái và tổng phải


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Cho T bộ dữ liệu. Mỗi bộ có dãy N số nguyên, chia dãy thành phần trái gồm N / 2 phần tử đầu và phần phải là phần còn lại. In ra tích của tổng phần trái và tổng phần phải.

Cách làm
  1. Với mỗi bộ dữ liệu, đọc N và khai báo hai biến tổng trai và phai bằng 0.

  2. Đọc lần lượt N số. Với chỉ số i (tính từ 0) nhỏ hơn N / 2 thì cộng vào trai, còn lại thì cộng vào phai. Phép chia N / 2 là chia lấy phần nguyên.

  3. Tích trai * phai có thể lên tới khoảng 10^10 nên phải dùng long long. Khi N = 1 thì phần trái rỗng, tổng bằng 0, tích bằng 0.

#include <bits/stdc++.h>
using namespace std;

int main() {
    int t;
    cin >> t;
    while (t > 0) {
        int n;
        cin >> n;
        long long trai = 0;
        long long phai = 0;
        // Phần trái gồm N / 2 phần tử đầu, phần phải là các phần tử còn lại
        for (int i = 0; i < n; i++) {
            long long x;
            cin >> x;
            if (i < n / 2) {
                trai = trai + x;
            } else {
                phai = phai + x;
            }
        }
        // Tích có thể lên tới 10^10, nên dùng long long
        cout << trai * phai << "\n";
        t--;
    }
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.