[Buổi 15][STL][HW] Bài 1: Cập nhật vector bằng range-for
Cập nhật vector bằng range-for
Bối cảnh
Một cụm cảm biến được hiệu chuẩn lại sau khi kỹ sư phát hiện tất cả phép đo đang lệch cùng một lượng d. Dữ liệu đã được đọc vào vector và phải được chỉnh trực tiếp tại chỗ để các bước xử lý sau sử dụng ngay giá trị mới. Bài toán rất đơn giản về mặt thuật toán, nhưng nó kiểm tra một chi tiết quan trọng của C++: range-for mặc định tạo bản sao của từng phần tử. Nếu viết for (long long x : a), việc cộng d chỉ thay đổi biến tạm x và vector gốc vẫn giữ nguyên. Muốn cập nhật dữ liệu thật, cần duyệt bằng reference long long& x.
Đây là Homework Easy của B15 nên không thêm container hay thuật toán mới. Mục tiêu là hiểu đúng semantics của vector và reference trước khi chuyển sang các bài nhiều representation phức tạp hơn.
Yêu cầu
- Đọc vector.
- Cộng d vào từng phần tử.
- In vector sau cập nhật.
Input
Dòng 1 n; dòng 2 n số; dòng 3 d.
Output
Một dòng n giá trị sau cập nhật.
Ràng buộc
1≤n≤2000, kết quả nằm trong long long.
Ví dụ 1
Input
3
1 2 3
5
Output
6 7 8
Giải thích
Vector ban đầu là 1 2 3 và d=5. Khi duyệt bằng reference, phần tử thứ nhất đổi từ 1 thành 6, phần tử thứ hai từ 2 thành 7, phần tử cuối từ 3 thành 8. Vì thay đổi được thực hiện trực tiếp trên vector gốc, dòng output sau cùng là 6 7 8.
Ví dụ 2
Input
1
10
-2
Output
8
Giải thích
Vector chỉ có 10 và d=-2. Reference trỏ trực tiếp đến phần tử duy nhất, nên phép cộng biến 10 thành 8. Không có phần tử nào khác cần xử lý, vì vậy output là 8.
Thông tin học tập
- Module: M05
- Buổi: B15
- Loại bài: HOMEWORK
- Độ khó: Easy
- Concepts: vector, range-for reference, update
- Giới hạn kiến thức: B01-B15
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments