Hướng dẫn giải của MATRIX01: Tổng bảng


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 bảng số gồm n hàng và m cột ~n, m \le 1000~, các phần tử có giá trị tuyệt đối không quá ~10^6~. Hãy tính tổng tất cả các số trong bảng. Đọc dữ liệu từ file MATRIX01.INP và ghi kết quả ra file MATRIX01.OUT.

Cách làm

Dùng hai vòng for lồng nhau: vòng ngoài duyệt từng hàng i, vòng trong duyệt từng cột j, đọc từng số và cộng dồn vào tong. Vì có tới ~10^6~ phần tử, mỗi phần tử có thể đến ~10^6~ nên tổng có thể lên tới khoảng ~10^{12}~. Bẫy cần nhớ: phải dùng long long cho biến tong, nếu dùng int sẽ bị tràn.

Đầu chương trình ta dùng freopen để chuyển hướng việc đọc từ file MATRIX01.INP và ghi ra file MATRIX01.OUT.

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

int main() {
    // Đọc từ file MATRIX01.INP, ghi ra file MATRIX01.OUT
    freopen("MATRIX01.INP", "r", stdin);
    freopen("MATRIX01.OUT", "w", stdout);

    int n, m;
    cin >> n >> m;
    // Tổng có thể lên tới 10^12 nên dùng long long
    long long tong = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            long long x;
            cin >> x;
            tong += x;
        }
    }
    cout << tong << "\n";
    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.