Hướng dẫn giải của A + B
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.
Lời giải này đang bị ẩn cho đến khi bạn chọn mở ra.
Chúng tôi khuyên bạn nên tự thử giải bài trước. Việc mở lời giải có thể làm lộ mất ý tưởng chính trước khi bạn có cơ hội tự giải.
Bạn phải đăng nhập để mở lời giải này.
Đăng nhậpTác giả: , , ,
Hiểu bài toán
Bài toán yêu cầu tính tổng của hai số nguyên a và b được nhập vào từ input và in kết quả ra output. Đây là bài toán cơ bản nhất để làm quen với nhập/xuất dữ liệu trong lập trình.
Các cách tiếp cận
Cách Basic I/O
#include<iostream>
using namespace std;
int main()
{
#ifndef ONLINE_JUDGE
freopen ("input.txt", "r", stdin);
freopen ("output.txt", "w", stdout);
#endif
int a, b;
cin>>a>>b;
cout<<a+b;
return 0;
}
- Time Complexity: O(1)
- Space Complexity: O(1)
Sử dụng thư viện iostream cơ bản. Khai báo hai biến số nguyên a, b. Đọc giá trị a và b bằng cin, tính tổng bằng phép cộng trực tiếp và in ra bằng cout. Có thêm phần code条件编译 để chạy offline (đọc từ file input.txt và ghi ra output.txt) dùng cho việc test locally.
Cách Optimized I/O & Long Long
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie();
long long a,b;
cin>>a>>b;
cout<<a+b;
return 0;
}
- Time Complexity: O(1)
- Space Complexity: O(1)
Sử dụng thư viện bits/stdc++.h bao gồm toàn bộ thư viện chuẩn. Sử dụng long long thay vì int để đảm bảo không bị tràn số nếu a và b có giá trị lớn (ví dụ lên tới $10^{18}$). Tối ưu hóa tốc độ nhập xuất bằng ios::syncwithstdio(false) và cin.tie() để bỏ đồng bộ với stdio cũ, giúp cin/cout chạy nhanh hơn.
Phân tích độ phức tạp
| Cách tiếp cận | Time | Space | Tên |
|---|---|---|---|
| 1 | O(1) | O(1) | Basic I/O |
| 2 | O(1) | O(1) | Optimized I/O & Long Long |
Bài học kinh nghiệm
- Bài toán chỉ cần thao tác nhập xuất cơ bản và phép cộng.
- Sử dụng long long để phòng trường hợp số quá lớn so với int.
Lỗi thường gặp
- Quên includes thư viện iostream hoặc bits/stdc++.h.
- Khai báo biến kiểu int nhưng input nằm ngoài khoảng $[-2^{31}+1, 2^{31}-1]$ gây tràn số.
Bình luận