Hướng dẫn giải của Bé học phép nhân
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ả: , , ,
Editorial for prod: Bé học phép nhân
Hiểu bài toán
Bài toán yêu cầu xác định dấu của tích hai số nguyên a và b. Với a, b trong khoảng [-10, 10], đầu ra là 1 nếu tích dương, -1 nếu tích âm, và 0 nếu tích bằng 0.
Các cách tiếp cận
Cách Tính toán trực tiếp
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
int product = a * b;
if (product > 0) printf("1");
else if (product < 0) printf("-1");
else printf("0");
return 0;
}
- Time Complexity: O(1)
- Space Complexity: O(1)
Phương pháp này tính toán giá trị tích của a và b và sử dụng các câu lệnh điều kiện if-else để kiểm tra dấu của kết quả. Đây là cách tiếp cận trực quan nhất.
Cách Kiểm tra dấu không nhân
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
if (a > 0 && b > 0 || a < 0 && b < 0) printf("1");
else if (a == 0 || b == 0) printf("0");
else printf("-1");
return 0;
}
- Time Complexity: O(1)
- Space Complexity: O(1)
Thay vì tính toán tích, phương pháp này chỉ cần kiểm tra dấu của các số. Nếu hai số cùng dấu (cả hai dương hoặc cả hai âm) thì tích dương. Nếu một trong hai bằng 0 thì tích bằng 0. Ngược lại, tích âm. Cách này tránh thao tác nhân.
Phân tích độ phức tạp
| Cách tiếp cận | Time | Space | Tên |
|---|---|---|---|
| 1 | O(1) | O(1) | Tính toán trực tiếp |
| 2 | O(1) | O(1) | Kiểm tra dấu không nhân |
Bài học kinh nghiệm
- Có thể xác định dấu của tích bằng cách kiểm tra dấu của các số hạng thay vì tính toán giá trị tích.
- Sử dụng cấu trúc if-else là đủ để giải quyết bài toán này một cách hiệu quả.
Lỗi thường gặp
- Quên xử lý trường hợp một hoặc cả hai số bằng 0, dẫn đến việc in sai kết quả.
- Sử dụng phép chia thay vì phép nhân có thể gây lỗi số học (chia cho 0) hoặc sai lệch.
Bình luận