DAYHLI - Ngày hợp lệ

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 0.1s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Cho 3 số nguyên dương ~d, m~ và ~y~. Hãy kiểm tra xem ngày ~d/m/y~ có phải là một ngày hợp lệ hay không?

Input

  • Dòng 1 ghi số nguyên dương ~N (N≤10^4)~
  • Dòng thứ 2 đến dòng thứ ~N+1~ mỗi dòng ghi 3 số tương ứng với ~d, m~ và ~y~ là ngày, tháng và năm cần kiểm tra (~1≤d,m<1990≤y≤3000~)

Output

Giá trị TRUE và FALSE. Ghi FALSE nếu ngày không hợp lệ, TRUE nếu ngày hợp lệ (mỗi giá trị trên 1 dòng).

Sample

Input #1
5
2 9 2016
17 1 1992
2 4 2014
4 1 1995
2 4 2004
Output #1
TRUE
TRUE
TRUE
TRUE
TRUE

Problem source: Thcs Lập Thạch


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    nhantrong  đã bình luận lúc 24, Tháng 2, 2024, 7:35

    include <iostream>

    using namespace std;

    bool isValidDate(int d, int m, int y) { // Kiểm tra năm if (y < 1990 || y > 3000) return false;

    // Kiểm tra tháng
    if (m < 1 || m > 12)
        return false;
    
    // Kiểm tra ngày
    if (d < 1)
        return false;
    if (m == 2) {
        if ((y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) && d <= 29)
            return true;
        else if (d <= 28)
            return true;
        else
            return false;
    }
    if (m == 4 || m == 6 || m == 9 || m == 11) {
        if (d <= 30)
            return true;
        else
            return false;
    }
    if (d <= 31)
        return true;
    return false;
    

    }

    int main() { int N; cin >> N; bool results[N];

    for (int i = 0; i < N; ++i) {
        int d, m, y;
        cin >> d >> m >> y;
        results[i] = isValidDate(d, m, y);
    }
    
    for (int i = 0; i < N; ++i) {
        if (results[i])
            cout << "TRUE" << endl;
        else
            cout << "FALSE" << endl;
    }
    
    return 0;
    

    }