DATE1 - Tra cứu ngày 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, PyPy, Python, Ruby, Rust, Scratch, Swift

Cho hai số nguyên ~n,y~. Hãy cho biết ngày thứ ~n~ của năm ~y~ là ngày nào. Biết rằng ngày mùng ~1~ tháng ~1~ tính là ngày thứ ~1~.

Input

  • Gồm hai số nguyên ~n,y~ ghi trên một dòng, cách nhau bởi một hoặc nhiều dấu cách.

Giới hạn:

  • Trong tất cả các test: ~1 \le n \le 365,1900 \le y \le 2050~

Output

  • Ghi trên một dòng hai số nguyên ~d, m~ theo thứ tự là ngày, tháng của năm ~y~.

Sample

Input #1
5 2016
Output #1
5 1
Input #2
34 2012
Output #2
3 2

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 1
    khang1508  đã bình luận lúc 14, Tháng 12, 2025, 12:53

    mấy bro ơi tôi dùng python mà ai giúp với


  • 1
    congtyluuthaibao1978  đã bình luận lúc 25, Tháng 11, 2025, 9:17

    // Cho ai cần =))

    include <bits/stdc++.h>

    using namespace std;

    bool isLeap(int y) { if (y % 400 == 0) return true; if (y % 100 == 0) return false; if (y % 4 == 0) return true; return false; }

    int main() { int n, y; cin >> n >> y;

    // days[1] = 31 ngày tháng 1, days[2] = 28 ngày tháng 2, ...
    vector<int> days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
    if (isLeap(y)) 
        days[2] = 29;  // Năm nhuận thì tháng 2 có 29 ngày
    
    int m = 1;
    while (m <= 12)
    {
        if (n > days[m])
        {
            n -= days[m];
            m++;
        }
        else
        {
            break;
        }
    }
    
    int d = n;
    cout << d << " " << m;
    
    return 0;
    

    }


  • 0
    crushoralone  đã bình luận lúc 16, Tháng 11, 2025, 14:14

    include <bits/stdc++.h>

    using namespace std;

    bool leap(int y){ return (y%400==0) || (y%4==0 && y%100!=0); }

    int main(){ ios::syncwithstdio(false); cin.tie(nullptr);

    long long n,y;
    cin >> n >> y;
    
    int md[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    if(leap(y)) md[1] = 29;
    
    int m = 1;
    while(n > md[m-1]){
        n -= md[m-1];
        m++;
    }
    cout << n << " " << m;
    

    }


  • 4
    1000dayslearningcode  đã bình luận lúc 12, Tháng 8, 2025, 11:12

    tôi đã bậc khóc vì sự kiên trì, tư duy logic mạnh mẽ có thể thấy được trên từng dòng if else ấy


  • 21
    Nigger123  đã bình luận lúc 17, Tháng 1, 2024, 7:42

    Bài giải hay quá đọc bài mà thấm từng tế bào trong cơ thể tôi như rung lên vì những điều mà bài giải ấy truyền đạt . Đúng là cụ tổ IT , ông hoàng If - else , ông trùm vòng lặp kẻ hủy diệt bài khó ,..


    • 6
      dccnth  đã bình luận lúc 16, Tháng 4, 2024, 11:38

      người truyền cảm hứng code là đây =)))))