Hướng dẫn giải của Bạn bao nhiêu tuổi?


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.

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ập

Tác giả: Hiếu Nguyễn, kastsecurity, LamThanhVu, dzgn

Editorial for ptit023: Bạn bao nhiêu tuổi?

Hiểu bài toán

Bài toán yêu cầu tính tuổi hiện tại của một người dựa trên năm sinh. Giả định năm hiện tại là 2021. Đầu vào là một số nguyên N (1900 ≤ N ≤ 2018) đại diện cho năm sinh. Đầu ra là số tuổi (số nguyên) tính bằng cách lấy năm hiện tại trừ cho năm sinh.

Các cách tiếp cận

Cách Basic Subtraction
#include<stdio.h>

int main(){
    int n;
    scanf("%d",&n);
    printf("%d",2021 - n);
    return 0;
}
  • Time Complexity: O(1)
  • Space Complexity: O(1)

Đây là cách tiếp cận đơn giản nhất và trực tiếp nhất. Chương trình chỉ cần khai báo một biến integer để lưu năm sinh, đọc giá trị từ input, và thực hiện phép trừ 2021 - N. Kết quả được in ra ngay lập tức. Phép toán này chiếm thời gian không đáng kể (hằng số).

Cách Validation Check
#include <stdio.h>
int main(){
    int n,c;
    scanf("%d", &n);
    if(1900<= n && n<=2018 ){
    c= 2021-n;
    printf("%d", c);
    }else printf("nhap lai");
    return 0; 
}
  • Time Complexity: O(1)
  • Space Complexity: O(1)

Cách tiếp cận này thêm bước kiểm tra xem năm sinh nhập vào có nằm trong khoảng cho phép (1900 đến 2018) hay không. Nếu hợp lệ, nó thực hiện tính toán và in kết quả. Nếu không, nó sẽ in ra thông báo lỗi "nhap lai". Mặc dù bài toán gốc không yêu cầu xử lý lỗi, đây là một thực hành tốt để đảm bảo dữ liệu đầu vào.

Phân tích độ phức tạp

Cách tiếp cận Time Space Tên
1 O(1) O(1) Basic Subtraction
2 O(1) O(1) Validation Check

Bài học kinh nghiệm

  • Bài toán là một phép toán số học đơn giản (Phép trừ).
  • Năm sinh và năm hiện tại đều là số nguyên nên kết quả tuổi là một số nguyên không âm.

Lỗi thường gặp

  • Quên khai báo biến trước khi sử dụng.
  • Đặt sai thứ tự số trong phép trừ (ví dụ: in ra N - 2021 thay vì 2021 - N) sẽ ra kết quả âm.
  • Bỏ qua kiểm tra điều kiện đầu vào nếu hệ thống yêu cầu nghiêm ngặt về phạm vi dữ liệu.

Bình luận

Please read the guidelines before commenting.


Không có bình luận tại thời điểm này.