DK09 - Kiểm tra năm nhuận

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
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

Trái đất của chúng ta cần ~365.25~ ngày để quay hết một vòng quanh mặt trời. Phần dư ~0.25~ thực ra đã làm tròn, con số thực tế là ~365.2425~ ngày để trái đất quay được một vòng. Giá trị sai số này ~0.0075~ ngày ~(0.25 - 0.2425)~ khi nhân với ~400~ chúng ta sẽ có thêm ~3~ ngày nữa. Do đó, để lịch của ta chính xác, các chu kỳ ~100, 200~ và ~300~ chỉ có ~24~ năm nhuận thay vì ~25~. Riêng chu kỳ thứ ~400~ sẽ có ~25~ năm nhuận. Điều đó đảm bảo rằng mỗi chu kỳ ~400~ năm sẽ có ~97 (24 + 24 + 24 + 25)~ năm nhuận. Như vậy, cứ ~400~ năm chúng ta sẽ có ~97~ năm nhuận, chứ không phải ~100~ nhé.

Hãy viết chương trình kiểm tra giá trị nguyên ~year~ nhập từ bàn phím có phải là năm nhuận không (theo dương lịch).

Lưu ý: Giá trị năm ~(year)~ được coi là hợp lệ nếu: ~ 0 < year <= 100000 ~. Bộ test của đề bài sẽ có thể nằm ngoài giới hạn hợp lệ này, hãy chú ý kiểm tra kỹ nhé.

Input

Một số nguyên ~year~ là giá trị cần kiểm tra

Output

  • Nếu ~year~ là năm nhuận, in ra YES
  • Nếu ~year~ là năm không nhuận, in ra NO
  • Nếu giá trị ~year~ không hợp lệ, in ra INVALID

Sample

Input #1
2020
Output #1
YES

Giới hạn

  • Toàn bộ các testcase có ~-10^6 \le year \le 10^6~

Bình luận

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



  • 0
    hlin  đã bình luận lúc 30, Tháng 3, 2024, 15:55

    n=int(input()) if 0<=n<=100000: if n%400==0: print('YES') elif n%4==0 and n%100!=0: print('YES') elif n%100==0 or n%4!=0: print('NO') làm sao để qua case 4,5 ạ


  • -1
    _dang_  đã bình luận lúc 24, Tháng 2, 2024, 10:05

    include <bits/stdc++.h>

    using namespace std; long long n; int main () { cin >> n; if (0 < n && n < 100000){ if ((n % 400 == 0 || n % 4 == 0) && n % 100 != 0) cout << "YES"; else cout << "NO"; } else cout << "NOT INVALID"; return 0; } sao nó cứ sai case 4 với case 5 vậy ạ


  • -1
    Chutecobac  đã bình luận lúc 19, Tháng 2, 2024, 13:32

    include <bits/stdc++.h>

    using namespace std; int main (){ long long n; cin >> n; if (( 0 < n ) && ( n < 100000 )) { if (( n % 400 == 0) || (( n % 4 == 0 ) && ( n % 100 != 0 ))) { cout <<"YES"<< endl; } else { cout <<"NO"<< endl;
    }
    } else { cout <<"INVALID"<< endl; } return 0;
    }

    Mọi người học tốt nhá!!!


  • 2
    hieucode  đã bình luận lúc 25, Tháng 1, 2024, 15:10

    C++ (BÍ HÃY THAM KHẢO ) TÔN TRỌNG NGƯỜI VIẾT

    if ( n > 0 && n<= 100000 ){
    if (( n % 400 == 0 || n % 4 == 0) && (n % 100 != 0)){
     cout << "YES";
    }
    else 
    cout << "NO";
    

    }

    else

    cout << "INVALID";
    return 0;
    

    }


  • -1
    ntkhoa  đã bình luận lúc 21, Tháng 1, 2024, 9:44

    sao của e ko qua đc case 5 nhỉ long year;

    scanf("%ld", &year);
    
    if(year > 0){
        if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0 )){
            printf("YES");
        }
        else{
            printf("NO");
        }   
    }
    else{
        printf("INVALID");
    }
    

    • -1
      QMin  đã bình luận lúc 28, Tháng 1, 2024, 15:24

      if (year > 0 && year <= 100000)


  • -1
    hohoanghai5042011  đã bình luận lúc 12, Tháng 1, 2024, 8:15

    #include <bits/stdc++.h>

    using namespace std; unsigned long long n; int main() { cin>>n; if(n==0||n>100000) cout<<"INVALID"; else{ if((n%400==0)||(n%4==0)&&n%100!=0) cout<<"YES"; else cout<<"NO"; } }


  • -2
    nhantrong  đã bình luận lúc 12, Tháng 1, 2024, 8:08

    include <bits/stdc++.h>

    using namespace std; bool ktnamnhuan(int year) { if (year%4==0&&(year%100!=0||year%400==0)) { return 1; } return 0; } int main() { int year; cin>>year; if ((year==0)||(year>100000)) { cout<<"INVALID"; return 0; } else { if (ktnamnhuan(year)==1) { cout<<"YES"; } else if (ktnamnhuan(year)==0) { cout<<"NO"; } } return 0; }


  • -2
    hoangnguyen27  đã bình luận lúc 9, Tháng 1, 2024, 2:18

    ...? :V


  • -2
    hoangnguyen27  đã bình luận lúc 9, Tháng 1, 2024, 2:16

    WTF


  • 0
    g57svu  đã bình luận lúc 21, Tháng 12, 2023, 14:03

    sao e cứ bị sai case 4 5 ạ

    long long year;
    cin >>year;
    if((year<=0)&&(year >100000)) cout<<"INVALID";
    else{
        if(((year%4==0)&&(year%100!=0))||(year%400==0)) cout <<"YES";
        else cout <<"NO";
    }
    return 0;
    

    • -1
      haidang3004  đã bình luận lúc 9, Tháng 1, 2024, 6:02

      năm nhuận chỉ chia hết cho 400 thôi bạn nhé


      • -1
        DKN13  đã bình luận lúc 11, Tháng 1, 2024, 4:17

        Có 2 trường hợp nha e, chia hết 400 hoặc chia hết 4 mà kh chia hết cho 100


        • -1
          g57svu  đã bình luận lúc 12, Tháng 1, 2024, 15:35

          e làm rồi mà nó báo lỗi ạ


          • 0
            CaoTrung  đã bình luận lúc 14, Tháng 1, 2024, 13:28

            chỗ INVALID là dấu hoặc nha bạn


            • -1
              g57svu  đã bình luận lúc 29, Tháng 1, 2024, 16:30

              e cảm ơn


  • -1
    hoclaptrinhc  đã bình luận lúc 9, Tháng 12, 2023, 14:36

    năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 100 nhưng nếu chia hết cho 400 thì vẫn là năm nhuận


  • -1
    TQThong2k11  đã bình luận lúc 1, Tháng 12, 2023, 2:46

    include <bits/stdc++.h>

    define str string

    typedef long long ll; typedef double dou;

    using namespace std; bool check(int n){ if(n % 4 == 0 && n % 100 != 0 || n % 400 == 0){ return true; } else return false; } ll n; int main(){ cin >> n; if(n >= 100000 || n < 1){ cout << "INVALID"; } else if(check(n) == true){ cout << "YES"; } else cout << "NO"; return 0; } code c++


  • 0
    votunganh  đã bình luận lúc 28, Tháng 11, 2023, 4:10

    Các bạn ơi! Sao mình làm mà cứ sai case 5 mãi thế này Bài mình đây này:

    include <iostream>

    using namespace std; int main(){ int y; cin >> y; if (y < 1) cout << "INVALID"; else if (y % 4 == 0) cout << "YES"; else cout << "NO"; return 0; }


    • -1
      Phantom  đã bình luận lúc 29, Tháng 11, 2023, 5:43

      y > 0. Trong code bạn là y > 1. năm 1 vẫn tính là hợp lí y < 100000 nhưng bạn lại quên kiểm tra. Một năm là năm nhuận nếu nó chia hết cho 4 NHƯNG không chia hết cho 100, hoặc nếu nó chia hết cho 400


  • -3
    toansoict5232  đã bình luận lúc 9, Tháng 11, 2023, 17:44

    Sao em cứ sai ở case 4 thế ạ ? :((


    • -1
      Mikehoccode  đã bình luận lúc 21, Tháng 11, 2023, 13:37

      bạn coi lại giá trị year á. nếu mà nó <=0 hoặc >100000 thì k hợp lệ


  • -3
    taithikgirl  đã bình luận lúc 28, Tháng 10, 2023, 2:30

    hao no


  • -6
    Tien  đã bình luận lúc 15, Tháng 10, 2023, 7:38

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -8
    Geno2806  đã bình luận lúc 12, Tháng 10, 2023, 15:47

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -7
    hoa111  đã bình luận lúc 27, Tháng 8, 2023, 9:45

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -8
    FuuFanMu  đã bình luận lúc 23, Tháng 8, 2023, 14:55

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -6
    qwerty  đã bình luận lúc 21, Tháng 8, 2023, 10:32

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -15
    nhatduy27  đã bình luận lúc 16, Tháng 7, 2023, 8:37

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • -10
      duydonv  đã bình luận lúc 29, Tháng 7, 2023, 16:15

      Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


      • 0
        z1cle_  đã bình luận lúc 31, Tháng 10, 2023, 12:04

        có thể nằm ngoài giới hạn hợp lệ và và, và nó đã là giới hạn thấp hơn:)) ad sương gió.


      • -4
        luyencode123  đã bình luận lúc 19, Tháng 10, 2023, 3:20

        10^5 là giá trị năm hợp lệ, 10^6 là giá trị mà testcase có thể tới. 2 số này khác nhau mà. Test case 5 chính là cho cái này năm nhập vào lớn hơn 10^5.


  • -12
    hoanglb2k2  đã bình luận lúc 9, Tháng 7, 2023, 14:18

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -9
    LightyWind  đã bình luận lúc 7, Tháng 7, 2023, 14:21

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.