DK10 - Tìm số ngày của tháng

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

Thử thách lần này của bạn là xác định số ngày của một tháng (theo dương lịch). Bạn sẽ được cung cấp 2 giá trị nguyên dương là tháng (~ month ~) và năm (~ year ~) cần kiểm tra.

Thời gian được cho là hợp lệ nếu:

  • ~ 1 \le month \le 12 ~
  • ~ year > 0~

Bạn cần lưu ý là giới hạn của bộ test sẽ nằm ngoài giới hạn hợp lệ, hãy kiểm tra các trường hợp không hợp lệ thật kỹ nhé.

Input

Lần lượt là 2 giá trị nguyên dương ~ month ~ và ~ year ~

Giới hạn:

  • ~ 0 < month \le 100 ~
  • ~ -10^5 < year \le 10^5 ~

Output

  • Nếu thời gian nhập vào không hợp lệ, xuất ra INVALID
  • Trường hợp khác, in ra số ngày của thời gian được yêu cầu

Sample

Input #1
10 2020
Output #1
31
Input #2
14 2020
Output #2
INVALID
Input #3
2 2020
Output #3
29

Bình luận

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



  • 0
    ctq_justiin  đã bình luận lúc 27, Tháng 4, 2024, 13:33 chỉnh sửa

    include<bits/stdc++.h>

    #define int long long
    #define fi first
    #define se second
    #define pb push_back
    #define el '\n'
    
    using namespace std;
    
    using ll = long long;
    using str = string;
    using pii = pair<int,int>;
    using db = double;
    
    const int MOD = 1e9 + 7;
    const int inf = 2e18 + 7;
    
    void openfile(){
        if( fopen("question.txt", "r") ){
            freopen("question.txt", "r", stdin);
            freopen("answer.txt", "w", stdout);
        }
    }
    
    // justiin
    
    int n, t;
    bool ok = 0;
    
    signed main(){
        ios_base::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
    
        openfile();
    
        cin >> t >> n;
    
        if(n <= 0 || t > 12) return cout << "INVALID", 0;
    
        if((n%4 == 0 && n%100 != 0) || n%400 == 0) ok = 1;
    
        for(int i = 1; i <= 12; i++){
            if(i == t){
                if(i <= 7){
                    if(i == 2){
                        cout << (ok ? 29 : 28);
                    }
                    else{
                        cout << (i&1 ? 31 : 30);
                    }
                }
                else{
                    cout << (i&1 ? 30 : 31);
                }
            }
        }
    
        return 0;
    }
    

    code tham khảo nhé mọi người ^-^


  • 0
    2vhoc7  đã bình luận lúc 31, Tháng 3, 2024, 6:38

    CODE PYTHON TRÂU=))) if name =="main":

    m, y =map(int, input().split())
    if m>12 or m < 1 or y <= 0:
        print("INVALID")
    else:
        if (y % 400 == 0 or y % 4 == 0) and y%100!=0:
            if m == 2:
                print("29")
            elif m == 1 or m == 3 or m == 5 or m==7 or m==8 or m==10 or m == 12:
                print("31")
            else:
                print("30")
    
        else:
            if m == 2:
                print("28")
            elif m == 1 or m == 3 or m == 5 or m==7 or m==8 or m==10 or m == 12:
                print("31")
            else:
                print("30")
    

  • 0
    thinhdinhlien  đã bình luận lúc 29, Tháng 2, 2024, 13:59

    include<bits/stdc++.h>

    using namespace std; int year,month; int main () { cin>>year; cin>>month; switch(year){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout<<31; } switch(year){ case 4: case 6: case 9: case 11: cout<<30; } switch(year){ case 2: if((year%400==0)||(year%4==0)&& year%100!=0) {cout<<29<12||year<=0) cout<<"INVALID"<<endl;} } return 0; }sao minh cu sai test 4,5 vay


  • 0
    hoanganhdepzai  đã bình luận lúc 20, Tháng 2, 2024, 13:02

    (tôn trọng người viết, ai không biết làm thì tham khảo)

    include <bits/stdc++.h>

    using namespace std; int a,b; int main() { cin>>a>>b; if(1>a || a>12 || b<0) { cout<<"INVALID"; return 0; } if(1<=a && a<=12 && b>0) { if(a==1) { cout<<31; } if(a==2) { if(b%4==0 && b%100!=0) { cout<<29; return 0; } else { cout<<28; } } if(a==3) { cout<<31; } if(a==4) { cout<<30; } if(a==5) { cout<<31; } if(a==6) { cout<<30; } if(a==7) { cout<<31; } if(a==8) { cout<<31; } if(a==9) { cout<<30; } if(a==10) { cout<<31; } if(a==11) { cout<<30; } if(a==12) { cout<<31; } } return 0; }


  • 0
    Chutecobac  đã bình luận lúc 19, Tháng 2, 2024, 14:28

    include <bits/stdc++.h>

    using namespace std; int main (){ int t, n; cin >> t >> n; if ((( 1 <= t ) && ( t <= 12 )) && ( n > 0 )) { switch ( t ){ case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : cout <<"31"<< endl; break; case 4 : case 6 : case 9 : case 11 : cout <<"30" << endl;
    break;
    case 2 : if (( n % 400 == 0) || (( n % 4 == 0 ) && ( n % 100 != 0 ))){ cout <<"29"<< endl; } else { cout <<"28"<< endl; } break;
    } } else { cout <<"INVALID"<< endl; } return 0; }

    Các bạn học tốt nhá!!!


  • 0
    thovuan  đã bình luận lúc 17, Tháng 2, 2024, 14:37

    include <iostream>

    using namespace std;

    int main() { int y, m; cin >> m >> y; if (y <= 0 || (m < 1 || m > 12)) cout << "INVALID"; else { switch (m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout << "31"; break; case 4: case 6: case 9: case 11: cout << "30"; break; case 2: { if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) cout << "29"; else cout << "28"; break; } } } }

    Heading


  • 0
    phan_phat_dat  đã bình luận lúc 11, Tháng 2, 2024, 14:38

    cho mình hỏi làm sao để gắn code của mình lên bình luận vậy ạ (mình gắn vào mà nó không hiện khung như mấy bài khác)


  • 0
    voxuanhieu07  đã bình luận lúc 3, Tháng 2, 2024, 17:37

    include <bits/stdc++.h>

    using namespace std;

    int main (){
        ios_base::sync_with_stdio(0);
        cin.tie(0); cout.tie(0);
        int t,n; cin>>t>>n;
        if (t<=0 || t>12 || n<=0 || n>100000) cout <<"INVALID";
        else {
            if ((n%400==0 or n%4==0) && (n%100==0)) {
                if ( t==2) cout <<"28";
            }
            else {
                if (t==1 || t==3 || t==5 || t==7 || t==8 || t==10 || t==12) cout <<"31";
                if (t==2) cout <<"29";
                else { if (t==4 || t==6 || t==9 || t==11) cout <<"30";
                }
            }
        }
        return(0);
    

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

    C ++ ( BÍ HÃY THAM KHẢO )

    int n, m;

    cin >> n >> m;
    if (( n > 0 && n <= 12) && ( m > 0 && m <= 100000) ){
     if ((m % 400 == 0 || m % 4 == 0) && (m % 100 != 0)){
        if ( n == 2){
            cout << "29";
         }
     }
     else 
         cout << "28";
     if( n == 1 || n == 3 || n == 5 || n == 7 || n == 8 || n == 10 || n == 12)
        cout << "31"; 
     else if ( n == 4 || n == 6 || n == 9 || n == 11 )
        cout << "30";
    }
    else 
    cout << "INVALID";
    return 0;
    

    }


  • 0
    minh2312130  đã bình luận lúc 19, Tháng 1, 2024, 12:41

    testcase 5 là gì vậy mọi người


    • 0
      luckycat10000  đã bình luận lúc 11, Tháng 3, 2024, 16:56

      là bạn chưa gán điều kiện 1<=month<=12 nhé


  • 0
    Vjt_con_ngoc_ngheck  đã bình luận lúc 18, Tháng 1, 2024, 14:59

    test case 4 là j v m.n


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

    Code C++ nha Oanh oem

    include <iostream>

    using namespace std;

    int main() { int month,year; cin>>month>>year; int ngaytrongthang[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if((month<1)||(month>12)||(year<=0)||(year>10000))cout<<"INVALID"; else if(year%4==0&&year%100!=0||year%400==0) { if(month==2) cout<<"29"; else cout<<ngaytrongthang[month]; } else cout<<ngaytrongthang[month]; return 0; }


  • 0
    DKN13  đã bình luận lúc 12, Tháng 1, 2024, 11:18

    Tim so ngay cua thang

    m,y = [int(x) for x in input().split()]

    def namnhuan(y):

    if(y%400==0 or (y%4==0 and y%100!=0)):
    
        return True
    
    return False
    

    if(m<1 or m>12):

    print("INVALID")
    

    else:

     if(namnhuan(y)):
    
         if(m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12):
    
            print(31)
    
         elif(m==2):
    
            print(29)
    
         else:
    
            print(30) 
    
     else:
         if(m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12):
    
            print(31)
    
         elif(m==2):
    
            print(28)
    
         else:
    
            print(30)
    

  • -1
    Kha_ga_k29  đã bình luận lúc 30, Tháng 12, 2023, 12:33

    static void Main(string[] a) { string[] intString = Console.ReadLine().Split(); int month, year; int[] ngayTrongThang = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

            month = Convert.ToInt32(intString[0]);
            year = Convert.ToInt32(intString[1]);
    
            if (month < 1 || month > 12 || year < 0 || year > 100000)
                Console.Write("INVALID");
            else if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
            {
                ngayTrongThang[2] = 29;
                Console.Write(ngayTrongThang[month]);
            }
            else
            {
                Console.Write(ngayTrongThang[month]);
            }
            Console.ReadKey();
        } code C# ^^
    

  • 0
    opanime999  đã bình luận lúc 18, Tháng 12, 2023, 14:57

    test case 2 là gì mọi người


  • 1
    kitajima2910  đã bình luận lúc 11, Tháng 12, 2023, 4:04

    JAVA xin chào các vị đạo hữu, nay có tí bí tịch share cho các vị cùng học:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.GregorianCalendar;
    import java.util.StringTokenizer;
    
    /**
     *
     * @author hoai.phamxuan
     */
    public class DK10 {
    
        public static void main(String[] args) throws IOException {
    
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer st = new StringTokenizer(br.readLine());
    
            int month = Integer.valueOf(st.nextToken());
            int year = Integer.valueOf(st.nextToken());
    
            if(month < 1 || month > 12 || year < 1) {
                System.out.println("INVALID");
                return;
            }
    
            int day = 0;
            switch(month) {
                case 4: case 6: case 9: case 11:
                    day = 30;
                    break;
                case 2:
                    if(isLeapYear(year)) {
                        day = 29;
                    } else {
                        day = 28;
                    }
                    break;
                default:
                    day = 31;
                    break;
            }
    
            System.out.println(day);
        }
    
        private static boolean isLeapYear(int year) {
            return new GregorianCalendar().isLeapYear(year);
        }
    
    }
    

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

    Một cách khác gọn hơn mà ko phải xét từng tháng:

    Đối với tháng ~2~, ta kiểm tra riêng biệt

    Đối với các tháng từ ~1~ đến ~7~, nếu tháng là số lẻ thì là ~31~ ngày, còn không thì ~30~ ngày

    Đối với các tháng từ ~8~ đến ~12~, nếu tháng là số lẻ thì là ~30~ ngày, còn không thì ~31~ ngày


  • 0
    phamthemanh72  đã bình luận lúc 3, Tháng 12, 2023, 16:04 chỉnh sửa

    include <stdio.h>

    include <math.h>

    int main(){ int month, year; scanf("%d %d", &month, &year);

    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
    {
        printf("31");
    }
    else if (((month < 1 ) || (month > 12)) || (year <= 0 || year > 100000))
    {
        printf("INVALID");
    }
    else if(month == 4 || month == 6 || month == 9 || month == 11)
    {
        printf("30");
    }
    else if((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)))
    {
        if (month == 2)
        {
            printf("29");
        }
    }
    else{ 
        printf("28");
    }
        return 0;
    

    }


  • 0
    TQThong2k11  đã bình luận lúc 1, Tháng 12, 2023, 14:34

    include <bits/stdc++.h>

    define str string

    typedef long long ll; typedef double dou; using namespace std; bool nhuan(ll n){ if(n % 4 == 0 && n % 100 != 0 || n % 400 == 0){ return true; } else return false; } bool check(ll m, ll y){ if(m <= 12 && m >= 1 && y > -10000 && y <= 10000){ return true; } else return false; } ll m, y; int main(){ cin >> m >> y; if(check(m, y) == true){ if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12){ cout << 31; } else if(m == 2 && nhuan(y) == true){ cout << 29; } else if(m == 2){ cout << 28; } else cout << 30; } else cout << "INVALID"; return 0; } code C++ full cho bạn nào chưa biết nhé ^^


  • 0
    trh2kngoc578  đã bình luận lúc 29, Tháng 10, 2023, 12:37

    test case 4:Unexpected EOF in the participant's output thì mình sửa sao ạ?


    • 0
      phamthemanh72  đã bình luận lúc 3, Tháng 12, 2023, 16:16

      bác coi là phần điều kiện của tháng và năm thử


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

    hao no


  • 0
    Names_  đã bình luận lúc 17, Tháng 10, 2023, 7:56

    sai case là được


  • 0
    lch101  đã bình luận lúc 28, Tháng 8, 2023, 12:32

    :v bài này mọi người chú ý có năm nhuận nha


    • 0
      Jaker  đã bình luận lúc 29, Tháng 8, 2023, 3:40

      omg thanks