Hướng dẫn giải của Phép toán lớp 3
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 nhập vào 3 số nguyên a, b, c và tính toán biểu thức (a - b) * c. Sau đó in kết quả ra màn hình. Dữ liệu đầu vào có thể là số âm. Với giới hạn |a|, |b|, |c| <= 100, kết quả sẽ nằm trong khoảng [-20000, 20000] (vì (100 - (-100)) * 100 = 200 * 100 = 20000).
Các cách tiếp cận
Cách Sử dụng kiểu dữ liệu int
#include <stdio.h>
int main() {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
int res = (a - b) * c;
printf("%d", res);
return 0;
}
- Time Complexity: O(1)
- Space Complexity: O(1)
Sử dụng kiểu int là cách giải quyết đơn giản nhất. Với giới hạn đề bài, kiểu int (thường là 32-bit) đủ để lưu trữ kết quả cuối cùng mà không bị tràn số. Biến a, b, c được khai báo, nhập vào bằng scanf, tính toán và in ra.
Cách Sử dụng kiểu dữ liệu long long
#include <stdio.h>
int main() {
long long a, b, c;
scanf("%lld %lld %lld", &a, &b, &c);
long long res = (a - b) * c;
printf("%lld", res);
return 0;
}
- Time Complexity: O(1)
- Space Complexity: O(1)
Sử dụng kiểu long long (64-bit integer). Đây là một cách tiếp cận an toàn hơn, đảm bảo không bị tràn số kể cả khi giới hạn của đề bài được nới lỏng lên đáng kể. Cách này thường được khuyến khích trong lập trình thi đấu để tránh lỗi tràn số không đáng có.
Phân tích độ phức tạp
| Cách tiếp cận | Time | Space | Tên |
|---|---|---|---|
| 1 | O(1) | O(1) | Sử dụng kiểu dữ liệu int |
| 2 | O(1) | O(1) | Sử dụng kiểu dữ liệu long long |
Bài học kinh nghiệm
- Bài toán chỉ là phép tính số học cơ bản.
- Vấn đề duy nhất cần quan tâm là chọn kiểu dữ liệu phù hợp để tránh tràn số.
Lỗi thường gặp
- Lỗi cú pháp khi nhập/ xuất (ví dụ: sai format specifier trong scanf/printf).
- Quên các dấu ngoặc khi tính toán (ví dụ: a - b * c sẽ tính sai theo quy tắc nhân trước chia sau).
Bình luận